同じ操作を行うコードのチャンクが 2 つあります。1 つは自分で作成したチャンクで、もう 1 つはサード パーティが作成したチャンクです。どちらも単一の実行可能ファイルにコンパイルされます。サード パーティのコードは、私のコードよりもはるかに高速に処理できるようです。私の 500 と比較して、1 秒あたり 1,500 の操作を実行できます。次に、VTune 内で実行可能ファイルを実行し、callgraph プロファイリング オプションを使用して、時間を無駄にしている場所が明らかになることを期待しました。残念ながら、各関数にかかると考えられるマイクロ秒数を示す VTune 診断では、私の関数とサードパーティの関数の両方が呼び出しごとに約 0.002 秒かかっていると主張しています。これは私のコードでは問題ないように見えますが、サードパーティのコードの速度を (手動で) 測定した結果とは完全に一致していません。
これはどのように起こりますか?
編集: コードの両方のチャンクは大きく、サブ関数の独自の複雑なツリーを呼び出します。
編集:サードパーティのコードは純粋な C++ であるのに対し、私のコードは本質的に C++ コンパイラでコンパイルされたばかりの C コードであることを指摘しておく必要があります。
編集: VTune は非常に複雑なパッケージであり、理解できない構成オプションが多数あります。この不正確さを軽減するために使用できる設定がいくつかあるのではないでしょうか?