3

レガシーVB6アプリを.Netに移行中ですが、これは注目度の高いビジネスクリティカルなアプリケーションであるため、段階的に実行されています。

パフォーマンスを向上させるために、アプリケーションの存続期間中に何度もヒットする1つの方法があり、ランタイムを改善できるかどうかを確認するために.Net(C#)で書き直したいと考えていました。

問題のメソッドは、ADODBレコードセットを操作します。これらのレコードセットはCOM相互運用機能を介してVB6との間で受け渡されるため、認識または考慮すべきパフォーマンスの問題はありますか?

4

1 に答える 1

2

これについては特に何もしていませんが、Interopでの経験から、.NETは非常に最適化されており、通常、WinAPIまたはCOMへの相互運用呼び出しごとに発生するオーバーヘッドはごくわずかです。ADO Recordsetは、アンマネージヒープ上に作成された他のCOMオブジェクトと同じように扱われ、内部では、それらが処理するIntPtrアドレスです。

ネイティブの.NETFrameworkライブラリとそのガベージコレクターは、VBで利用できるものよりもはるかに優れています。.NETで古いVBコードの一部を書き直すと、相互運用のオーバーヘッドを無視するのに十分な、または少なくとも十分なパフォーマンスの向上が得られると思います。プロファイラーツールを装備し、実装を1つずつ移行するときにパフォーマンスを継続的に監視する場合に最適です。

于 2010-02-22T10:40:34.997 に答える