我正在使用 Qt 开发一个跨平台的分形浏览器。我在 Windows XP(使用 MSVC Express 2010 编译的程序)下在单核 CPU 上运行时遇到了性能问题,我还没有尝试过其他版本的 Windows。有两个内核,程序运行良好。它在具有一核或两核(使用 GCC 编译)的 Linux 下也能正常运行。
性能问题与通过计算线程中的信号调用小部件中的插槽有关。该小部件包含一个 QImage,我将一个指向其像素的指针传递给计算线程。该线程计算分形并将像素绘制到图像上。在每一行的末尾,线程向小部件发出一个信号,告诉它更新主线程中的显示。据我了解,这是一个排队连接。
使用 Windows 和单个 CPU,更新非常慢,比计算慢得多。它使程序无法使用。
相关代码类似于 Qt 文档中的 Mandelbrot 示例,除了我的信号没有参数,因为 Qimage 位于小部件而不是线程中,并且我没有将 QImage 转换为 QPixmap。
有没有人知道问题可能是什么以及如何解决它?它与调度,时间切片分配有关吗?MSVC 中是否有我需要设置的编译器标志?或者我需要如何修改我的程序?
非常感谢!