我需要用非常精确的时间(毫秒的顺序)刷新一些图像,为此我开发了QGLwidget的一个子类。图像在初始化时作为纹理加载。我正在使用一个QTimer实例来更改正在显示的图像。定时器的timeOut信号连接到一个timeOutSlot,它执行一些文件I/O,然后调用updateGL()。
虽然我知道事件处理程序用于外部事件,而信号/插槽用于图形用户界面内部的通信,但我也可以将其实现为timeOutEvent处理程序。
这两者之间有什么性能差异吗?任何超过2-3毫秒的性能损失对我来说都很重要(硬件一般,比如配备nVidia 8600M GT显卡的英特尔酷睿2双核T5700 )。
发布于 2011-09-11 01:30:01
我之所以说信号/槽,是因为事件被添加到事件队列中,其中Qt经常调用优化和重要性排序,而s/s则立即执行-尽管比直接调用慢。
发布于 2011-09-11 02:00:38
信号和槽大约比普通的旧函数调用慢10倍。但它们绝对不会慢到需要几毫秒的时间来处理。处理一个信号的时间大约是0.001毫秒(see slide 27)。
你说你需要一个非常精确的时间,那么你知道显示刷新率是如何影响绘图的吗?图像(通常)使用60 Hz刷新率绘制。图像之间的时间是16.7毫秒,所以这是你能得到的最大精度。
https://stackoverflow.com/questions/7372964
复制相似问题