0

同じアルゴリズムの 2 つのバージョンでは、valgrind/cachegrind の下で異なる合計命令フェッチ カウントとサイクル推定値が得られます。その差は約25%。ただし、プロセスのタイミングは非常に似ています (実際には、cachegrind-slow バージョンの方が短くなっています)。

  • バージョン 1:

    Ir:     146,328,018,245
    CEst:   152,553,736,055
    timing: 17.93 s
    
  • バージョン 2:

    Ir:     185,221,836,610
    CEst:   197,531,381,950
    timing: 17.53 s
    

この動作は予期されたものですか? バージョン 1 が遅い理由について詳しく知るにはどうすればよいですか?

4

1 に答える 1

0

この不一致は、cachegrind の実行とタイミングの実行に使用されるコンパイラ オプションが異なるためであることがわかりました。特に、cachegrind の実行では関数のインライン化を無効にしました (これにより、意味のある関数ごとのカウントを得ることができました)。

于 2012-10-18T12:46:54.750 に答える