我注意到我的Qt应用程序中有大量的页面错误。我通过调整一个停靠小部件的大小(下面有一个由数十个小部件组成的小部件树)来复制它,并使用AQTime跟踪该操作。这个操作有2000页的错误。为什么会这样呢?
在Windows 32位上使用QT4.5.3
更新:它们是软页面错误
UPDATE2:我在Qt设计器中创建了一个ui,其中包含两个项。如果我预览这一点,我得到200页错误每次我点击组合框来选择其中一个项目。
Parents
Code Type Routine Name Faults Faults with Children Hit Count
x86 qt_memfill_template<unsigned int,unsigned int> 2416 2416 5160
x86 qt_memfill<unsigned int> 2416 2416 5160
x86 qt_rectfill<unsigned int> 0 2416 5160
x86 qt_rectfill_template<unsigned int> 0 2416 63
x86 qt_rectfill_quint32 3 2419 63
x86 fillRect_normalized 1 2420 63
x86 QRasterPaintEngine::fillRect 3 2423 63
x86 QRasterPaintEngine::fillRect 1 2424 63
x86 QPainter::fillRect 1 2427 63
x86 fillRegion 0 2427 15
x86 QWidgetPrivate::paintBackground 2 2430 12
x86 QWidgetPrivate::drawWidget 0 2430 12
x86 QWidgetBackingStore::sync 2 2596 12
x86 QWidgetPrivate::syncBackingStore 4 2610 12
x86 QETWidget::translateConfigEvent 0 2479 6
x86 QtWndProc 0 2495 12
发布于 2011-06-22 12:09:41
最有可能的是,Qt分配了一个新的位图来保存小部件的外观,系统通过为进程分配新的页面来满足这个请求。在第一次写入这些页面时,会发生软页错误,并将实际页映射到进程地址空间。在重绘调用之间缓存位图可能会避免这种情况;但是,当调整大小时,所需位图的大小将改变,因此此优化不再适用;每次尺寸变化时,必须重新分配位图(导致软页错误)。
不过,这真的会对性能产生影响吗?
https://stackoverflow.com/questions/6442101
复制相似问题