我正在开发一个使用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示例是否也展示了该问题?换句话说,问题可能是由于你列出的差异或不是? –
这是一个好主意,我将不得不尝试。 –