(これは一般的な架空の質問であり、.NETは豚であり、理由で物乞いをしていると私は嘆きました。実際には、私の特定のアプリについての質問ではありませんでした。)
現在、C#で古いC++コードを書き直しています。すべてのレガシーアプリケーションを移植しています。最大3%のCPUを使用するC++アプリケーションがあります。ほとんどの場合、それらは何も使用しません。次に、コードを取得し、コピーして貼り付けてから、C#構文と.NETライブラリ、およびBAMに再フォーマットします。50%のCPU。これの理由は何ですか?最初はJITだと思っていたのですが、各コードパスを練習して、全部JITした後も、同じ問題です。
また、メモリが大幅に増加していることに気づきました。フルロードで9MBを使用していたアプリは、10 MBで開始し、50MBで実行するようになりました。ハードウェアは安いと思いますが、その原因を知りたいです。それは警報の原因ですか、それとも.NETはそれだけの豚ですか?
スキート射撃への1つの回答を更新
私はC#に精通しています。私は物事をLinqなどに変更します。私は通常、コードを取得して行数を減らします。.NETでC++の人が間違っていることの例をもう少し挙げていただけますか?
アップデート2
これは一般的な質問でしたが、問題のある特定のアプリは次のとおりです。
パラドックスデータベースからデータを取得するためにODBCドライバーを使用するスレッドがあります。次に、Linqを使用してこれをSQLデータベースに変換し、投稿します。ANTSプロファイラーを実行しましたが、データセットの入力に最も時間がかかるようです。続いてLinqの投稿。私の領域のいくつかがリフレクションの使用法であることは知っていますが、これなしで必要なことを行う方法がわかりません。文字列を文字列ビルダーに変更する予定です。これら2つの間に違いはありますか?
(int)datarow["Index"]
と
ConvertTo.Int32(datarow["Index"])
すべての文字列の連結をフォーマット文字列に変更しました。それは頭上で減少しませんでした。データリーダーとデータアダプターおよびデータセットの違いを知っている人はいますか?