Dont имеют большой опыт работы в Linux, у меня есть хорошо проверенный код, не получайте ошибки/предупреждения от MSVC, ICC, безупречно работать и на платформе Windows.Чрезвычайно медленный режим отладки?
Затем я скопировал эти коды в свою недавно установленную систему Linux (Ubuntu 13.10 с GCC 4.8.1), после чего я установил последнюю версию eclipse (3.8.1 или около того) с CDT и настроил ее с помощью компилятора GCC системы.
Eclipse CDT/GCC отлично работает со всеми тривиальными тестовыми кодами, которые я написал, затем я попрошу GCC собрать большую часть проверенного кода из Windows.
GCC скомпилировал его с ошибками NO и NO предупреждает, и программа работает нормально с тривиальными рабочими нагрузками, однако, как только я даю программе некоторую полезную нагрузку в реальном мире, она в основном freezen, навсегда завершается (когда в Windows, та же программа может завершить «реальную» полезную нагрузку за считанные секунды).
Может ли кто-нибудь сказать мне, что я должен исправить, или GCC - это то, что медленнее в режиме отладки (я имею в виду, по меньшей мере, на 2-3 величины медленнее, чем режим отладки ICC/MSVC), спасибо.
Уровень оптимизации компиляции устанавливается равным O3 для режима деблокирования, а также по умолчанию (без оптимизации или, по крайней мере, того, что я считаю) для режима отладки.
Проблема заключается в том, что я чувствую, что алгоритм ICC/MSVC в режиме отладки (без оптимизации) работает намного быстрее (я имею в виду, что-то вроде 1000 раз быстрее), чем GCC.
UPDATE: (На данный момент, кажется, я не могу сделать комментарий на StackOverflow, так что я должен положить ответы здесь, извините):
АМС: Ну, я подождать несколько минут, увидеть программу еще работает I просто прервите его, поэтому я не знаю, может ли программа закончить или нет. Однако, пока полезная нагрузка очень мала, она может закончить ее в обычном режиме.
Что касается узкого места кода, ну, я думаю, его память ограничена.
Большая часть времени (80 +%) кода выполняет некоторую сортировку radix с большим массивом входных данных, оптимизированный код сортировки radix, который я написал, может сортировать 200-300 миллионов 32-битных значений с плавающей запятой в секунду в Windows , но с тем же аппаратным обеспечением, в Linux, по-видимому, потребуется несколько часов, если не навсегда, чтобы отсортировать около 10 миллионов массивов данных длины.
UPDATE:
Спасибо за помощь все, что вам людей, я понял, что проблема заключается в некотором макросе я перепутались с Linux, теперь все работает отлично.
Какие флаги оптимизации вы используете с ICC и GCC? В какой части есть затмение? Какие системные вызовы используются вашей программой? – iveqy
Что такое узкое место, процессор, диск ввода-вывода или что? –
Вы говорите, что это * никогда * не завершается, или вы говорите, что оно завершено, но занимает много времени? – ams