私は同じDLLを使用するwin32 dllと2つのアプリケーションを持っています。 1つはアンマネージ空間でcを使用して記述され、もう1つはPinvokesを使用してアンマネージコードを呼び出す.netアプリケーションです。管理対象コードからアンマネージコードを呼び出すパフォーマンス
時々、.netアプリケーションのパフォーマンスがcアプリケーションより優れています。技術的に言えば、.netからアンマネージコードを呼び出すと、パフォーマンスのオーバーヘッドが発生しますが、この場合は発生しません。
私はmsdnリファレンスをチェックしました。実際の呼び出しが行われる前に何らかの前処理が行われているようです。リンケージ中にdllが読み込まれます。
私はどのようなシナリオでネットアプリケーションが優れているのか理解したいですか?
どのように2つのアプリケーションのパフォーマンスを測定し、他のすべてのロジックはまったく同じですか? –
一般的にネイティブコールは速くなければなりません。http://www.codeproject.com/KB/dotnet/pinvokeperformance.aspx測定値は正しいですか? –
@AvadaKedavra - 私は、それぞれnetとcアプリケーションのストップウォッチと時間を使って特定のメソッド呼び出しを測定しました。 – sundar