アプリケーションがスレッド数に比例してスケーリングするという問題があります (デュアル コア CPU では、800 スレッドで 400 スレッドのパフォーマンスが 2 倍になると考えてください)。そして、私の直感は、スレッドがスリープしているかブロックされていることを教えてくれます...しかし、callgrindでそれを見ることはできません。
同様に、callgrind は関数の時間、またはデータを作成するためにスレッドがアクティブだった時間を測定します。私が何を尋ねるかが明確でない場合...スレッドは
i ++;
2秒間、その後
sleep(1);//thread will not be scheduled to run for min 1 second...
...i++
コール グラフの約 100% または約 66% になります。