Я разрабатываю кроссплатформенный фрактальный исследователь с использованием Qt.У меня проблема с производительностью, особенно при работе на одноядерном процессоре под Windows XP (программа, скомпилированная с MSVC Express 2010), я не пробовал другие версии Windows.С двумя ядрами программа работает нормально.Он также прекрасно работает под Linux с одним или двумя ядрами (скомпилированными с GCC).
Проблема производительности связана с вызовом слота в виджете через сигнал в потоке вычислений.Виджет содержит QImage, и я передаю указатель на его пиксели в поток вычислений.Поток вычисляет фрактал и строит пиксели к изображению.В конце каждой строки поток посылает виджету сигнал, чтобы он обновлял отображение в основном потоке.Насколько я понимаю, это соединение с очередями.
В Windows и с одним процессором обновление происходит очень медленно, намного медленнее, чем расчет.Это делает программу непригодной для использования.
Соответствующий код похож на пример Мандельброта в документации Qt, за исключением того, что у моего сигнала нет аргументов, потому что Qimage находится в виджете, а не в потоке, и я не конвертирую QImageна QPixmap.
Есть ли у кого-нибудь какие-либо идеи о том, что может быть проблема и как идти к ее решению?Это как-то связано с планированием, распределением времени?Есть ли в MSVC флаг компилятора, который мне нужно установить?Или мне нужно как-то изменить мою программу?
Большое спасибо!