• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:.NET C++の処理速度)

.NET C++の処理速度

このQ&Aのポイント
  • C++とVBで書かれた.NETの処理速度について
  • .NET、JVM、ネイティブのCとの処理速度比較
  • C++もVBも.NET上で動く場合、処理速度の差はほとんどない

質問者が選んだベストアンサー

  • ベストアンサー
  • equinox2
  • ベストアンサー率48% (321/660)
回答No.3

古い情報なので、最新版とは違うと思いますが・・ 2002年に.NETが出てすぐ、業務での使用を検討するため比較しました。 #今は.NETがもっと洗練されているはず・・・  【円周率 20000桁計算 マーチンの式を使用】   ・VC6(Native) debug:91秒  Release:33秒   ・VC.NET(CLR) debug:81秒  Release:78秒 当時のCPUなので絶対値は意味ないですが、繰り返しが多い処理では .NETが予想外に善戦しました。 ただ、これは、繰り返しでの計算のみのなので、表示や他の処理を行なう 場合には、まったく異なる結果になる可能性も大です。

その他の回答 (2)

  • BLK314
  • ベストアンサー率55% (84/152)
回答No.2

これは一概には言えないと思います。 と言いますのは、 最近は"オプティマイザー"が大変賢くなってきているからです。 まず、前提ですが .NETはインタープリターではありません。 これは (過去の私も含めて)非常に誤解の多い所です。 毎回のようにネイティブ変換しながら実行していたのでは とても非効率です。それこそ、ネィティブCとは比較するのも 恥ずかしいほど遅いでしょう。 実際には、プログラムがロードされた時点で ネィティブに変換されます。 ですから、ロードの時間は大変長くなりますが、 一旦ロードされれば、ネィティブの速度が期待できます。 また、インストール時に変換させることもできます。 こうすれば、実行時は完全にネィティブの速度が出ます。 冒頭に述べていたオプティマイザの影響について述べます。 通常のC/C++はできるだけバイナリ互換を広くとろうとビルドします。 別の見方をすれば、 実行環境に関する仮定をできるだけ少なくする ともいえます。 つまり、Pentium4用にビルドした場合は 実際に走るCPUがCore2であっても、 単なる高速なPen4にしかなりません。 CPUキャッシュなどを仮定した最適化などは (指示がない限り) 行わないのが普通です。 しかし、.NETのネィティブへの変換の際には 実行環境が完全に特定されています。 CPUに大容量のキャッシュがあれば、 ギリギリまでサイズを小さくし キャッシュに詰め込めるサイズに最適化しようとするでしょうし、 4バイト境界ではキャッシュに入らないが、 1バイト境界に詰めればキャッシュに収まるなら キャッシュに収まるよう配置するということも考えられます。 逆に、CPUキャッシュが小さすぎて どう工夫してもキャッシュに収まらないのであれば、 素直に4ビット境界に配置し メモリアクセスの高速化を図ることもあると思います。 このような最適化は、一般のC/C++ではできません。 (プログラマが明示的に指示すれば可能です) 実行環境に対し完全に最適化された、.NETと 中途半端に最適化されたC/C++ それでも ”越えられない壁" があるほど差が付くとは 断定できないと思います。

  • SAYKA
  • ベストアンサー率34% (944/2776)
回答No.1

??? Cで書かれた物ってさ 「ライブラリ」 を作ったりするでしょ? じゃぁさ、Frameworkって 「何で作られたライブラリ」だと思う? まぁ嫌なら.NETじゃないVCとかでやるしかないかも。 それでも油断してるとすぐFrameworkのライブラリを使おうとしやがるけど。

関連するQ&A