Потеря производительности в MinGW g ++ после обновления с 4.5.0 до 4.6.2 - PullRequest
1 голос
/ 16 февраля 2012

Сегодня я обновил MinGW и перестроил свой текущий C ++ - проект.Я зарегистрировал информацию о времени после использования 4.5.0 и вижу огромную потерю производительности (примерно в 4 раза медленнее) при компиляции с версией 4.6.2.

Моя команда сборки:

g++ -Ilib\svl-1.5\include -Ilib\SDL-1.2.15\include -static-libgcc -static-libstdc++ \
-Ofast -O3 -oecl.exe src\ecl.cpp -lmingw32 -lSDLmain -lSDL -std=c++0x

Я использую MinGW в 64-битной системе Windows.

Есть ли у вас какие-либо идеи, которые приводят к такой плохой производительности?

В моей папке bin содержится файл с именем mingw32-gcc-4.5.0.На странице замечаний к выпуску MinGW 4.6 сказано, что ее можно использовать для компиляции с более старыми версиями.К сожалению, для g ++ такого бинарника нет.Я читал, что gcc также умеет компилировать C ++, но в моем случае это не работает, я просто получаю массу ошибок.Я нашел подсказку использовать g ++ только на сайтах, где люди спрашивали, как компилировать программы на C ++ с использованием gcc.

Есть ли способ компилировать мою программу на C ++ с использованием mingw32-gcc-4.5.0?Если нет, есть ли другой способ компиляции с использованием версии 4.5.0?Я хочу убедиться, что плохая производительность не вызвана изменениями в моем коде.

Edit

Мне удалось установить 4.5.0 снова, запустив мой старый MinGW-installer, загруженный в 2010 году. Я вернул свой код и файл сборки пакета в состояние вчерашнего дня.По-прежнему плохая производительность.MinGW устанавливает библиотеки DLL или другие связанные файлы вне своего установочного каталога?

Ответы [ 2 ]

2 голосов
/ 16 февраля 2012

Устанавливает ли MinGW библиотеки DLL или другие связанные файлы за пределами своего установочного каталога?

Я не уверен, что это применимо к вашей ситуации, но я слышал, что некоторые версииMinGW будет искать в \MinGW файлы / программы / DLL, даже если запущенный MinGW находится в другом месте.

Я не уверен, к какой версии (версиям) это поведение может относиться, но я бы рекомендовал использовать \MinGW для установки MinGW, только если на машине установлена ​​единственная цепочка инструментов MinGW.


Найден источник этого совета :

Не устанавливайте TDM-GCC на "C: \ MinGW"!

Ранее рекомендуемый путь для установки MinGW был «C: \ MinGW».Это больше не так - потому что другие версии GCC ищут этот путь для заголовков и библиотек, даже если они там не установлены.TDM-GCC был исправлен для исправления этой проблемы, но большинство других дистрибутивов MinGW / GCC этого не сделали.Это означает, что если у вас есть еще одна установка MinGW или MinGW-w64, он всегда будет искать заголовки и библиотеки в «C: \ MinGW», и вы, вероятно, в конечном итоге будете использовать неправильные заголовки и библиотеки по неосторожности.Поэтому теперь рекомендуется использовать другой путь для вашей установки.

0 голосов
/ 17 февраля 2012

Перезагрузка была решением. Он снова работает с обеими версиями, 4.5.0 и 4.6.2. Теперь binaray, скомпилированный с 4.6.2, работает еще лучше.

Производительность моей программы всегда была стабильной до обновления MinGW, поэтому я не думал, что это проблема с моей системой.

Но так работает наш разум: если две взаимосвязанные вещи происходят одновременно, мы думаем, что первое вызывает второе. Иллюзионисты используют этот факт: P

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...