我刚为这个超级问题/答案Why is my program slow when looping over exactly 8192 elements?
做了一些基准测试我想在一个核心上做基准测试,所以程序是单线程的。但它没有达到100%使用一个核心,它最多使用60%。所以我的测试不是准确的。
我正在使用Qt Creator,使用MinGW发布模式进行编译。
是否有任何参数可以设置以获得更好的性能?我不能利用CPU能力是正常的吗?这与Qt有关吗?是否有一些中断或阻止代码以100%运行的东西......
这是主循环
// horizontal sums for first two lines
for(i=1;i<SIZE*2;i++){
hsumPointer[i]=imgPointer[i-1]+imgPointer[i]+imgPointer[i+1];
}
// rest of the computation
for(;i<totalSize;i++){
// compute horizontal sum for next line
hsumPointer[i]=imgPointer[i-1]+imgPointer[i]+imgPointer[i+1];
// final result
resPointer[i-SIZE]=(hsumPointer[i-SIZE-SIZE]+hsumPointer[i-SIZE]+hsumPointer[i])/9;
}
在SIZE * SIZE浮点数组上运行10次,SIZE = 8193,数组在堆上。
答案 0 :(得分:1)
可能有几个原因导致任务管理器未在1核上显示100%的CPU使用率:
或者它可能是三者的组合。
Let_Me_Be对你的问题的评论是正确的 - 这里没有任何问题是QT的错误,因为没有调用QT函数(假设正在读取和写入的对象只是简单的数字数据类型,而不是过载的花哨C ++对象{ {1}}或其他)。在这个代码区域中发生的唯一活动纯粹是基于CPU的(好吧,CPU会花一些时间等待数据发送到RAM或从RAM发送,但这被视为CPU使用时间),所以除了上面给出的条件外,你会看到100%的CPU利用率。