このスーパー質問/回答のベンチマークをいくつか作成しました。正確に8192個の要素をループすると、プログラムが遅くなるのはなぜですか。
プログラムがシングルスレッドになるように、1つのコアでベンチマークを実行したいと思います。ただし、1つのコアの使用率が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=8193のSIZE*SIZE floatの配列で10回実行され、配列はヒープ上にあります。