我正在開發一個使用Qt的跨平臺分形探險器。我在使用Windows XP(使用MSVC Express 2010編譯的程序)在單核CPU上運行時遇到性能問題,我沒有嘗試過其他版本的Windows。有了兩個內核,程序運行良好。它在Linux下運行良好,可以使用一個內核或兩個內核(使用GCC編譯)。Windows XP上單核CPU的Qt線程問題
性能問題與通過計算線程中的信號調用小部件中的插槽有關。該小部件包含一個QImage,並將其像素的指針傳遞給計算線程。線程計算分形並將像素繪製到圖像上。在每行結束時,線程向小部件發出一個信號,告訴它更新主線程中的顯示。據我瞭解,這是一個排隊的連接。
對於Windows和單個CPU,更新速度非常慢,比計算速度慢得多。它使程序無法使用。
相關代碼與Qt文檔中的Mandelbrot示例類似,但我的信號沒有參數,因爲Qimage位於窗口小部件中,而不是線程,並且我沒有將QImage轉換爲QPixmap。
有沒有人有任何想法可以解決問題,以及如何解決它?這與調度,時間片分配有關嗎? MSVC中是否存在需要設置的編譯器標誌?或者我需要修改我的程序?
非常感謝!
您說的代碼與Mandelbrot示例類似 - Mandelbrot示例是否也展示了該問題?換句話說,問題可能是由於你列出的差異或不是? –
這是一個好主意,我將不得不嘗試。 –