1

アプリケーションの異常な動作に気付きましたが、なぜそれが起こっているのか理解できません。

私は非常に頻繁に呼び出すC#メソッド(メソッドC#と呼びましょう)を持っています。このメソッドの本体には、c++/cx メソッド (methodCx と呼びましょう) への呼び出しである命令が 1 つだけあります。

methodCx の平均実行時間は 1 ミリ秒未満です。methodC# の平均実行時間は 3ms です。

これは、C# から methodCx を呼び出す平均オーバーヘッドが約 3 ミリ秒であることを意味します。

アプリケーションの負荷が高い場合 (他のスレッドで計算が行われるため)、このオーバーヘッドは 80 ミリ秒にまで跳ね上がることがあります。なぜこれが起こっているのか理解できません。負荷が原因でコードの実行が遅くなることはわかっていますが、c# からの cx メソッドの呼び出しだけが大幅に増加しているようです。非 c# -> cx 呼び出しは影響を受けていないようです (少なくともそれほど劇的ではありません)。誰かがこの動作を説明できますか。少なくとも、犯人を探すヒントになるかもしれません。

前もって感謝します

Edit1 methodCx は、パラメーターとして 3 つの個別の float を取ります。Cx オブジェクトを返します。

Edit2 C# のタイミングにはストップウォッチを使用し、c++/cx のタイミングにはパフォーマンス カウンターを使用しました。結果は同じです。methodCx の実行時間は数百マイクロ秒ですが、他のスレッドの負荷が高い場合、methodC# の実行時間は最大 100 ミリ秒にもなります。

4

0 に答える 0