none
.NET Frameworkの言語毎の実行速度について RRS feed

  • 質問

  • .NET Frameworkにおいて、CLRでマネージコードのみのコーディングでは、言語による処理速度の違いは、VB,VC#,VC++
    あるのでしょうか?例えば50万回のループ処理に差が発生するのか?

    よろしくお願いします。
    2009年8月10日 0:13

回答

  • 同一ILにコンパイルされれば性能差はありません。

    同一ILになるかは何も保障はありませんので各コンパイラの吐くILを確認してください。
    現状から将来的な線では

    C++/CLIがC#/VB.NETとはちょっと違うILを吐く傾向があると思います。
    将来的にはC#/VB.NETはAST(コンパイル中に持つ構文木)以下を共有する方向なので意味が同じになる様にコードすれば全く同じILを吐くようになりますね。


    Kazuhiko Kikuchi
    2009年8月10日 0:40
  • もともと.NET環境では、コンパイラがはき出したコードそのものよりも実行時の動的な最適化(JIT)の方に重きを置いています。
    native C++ならコンパイラが50万回ループを出力したら実行時には必ず50万回ループ実行します。.NETなら実行時に無意味と判断されたら実行をスキップして次に進む可能性もあります。

    もう1つ、言語について気にされているのならC#をお勧めします。.NET FrameworkのラインタイムライブラリはC#で記述されているので、コンパイラやランタイムのチューニングはC#が基準になっていると思います。
    # もちろんkazukさんのおっしゃるとおりILが一緒なら違いはありませんが。
    2009年8月10日 3:20

すべての返信

  • 同一ILにコンパイルされれば性能差はありません。

    同一ILになるかは何も保障はありませんので各コンパイラの吐くILを確認してください。
    現状から将来的な線では

    C++/CLIがC#/VB.NETとはちょっと違うILを吐く傾向があると思います。
    将来的にはC#/VB.NETはAST(コンパイル中に持つ構文木)以下を共有する方向なので意味が同じになる様にコードすれば全く同じILを吐くようになりますね。


    Kazuhiko Kikuchi
    2009年8月10日 0:40
  • ありがとうございます。
    少しでも処理速度が速い方が良いのですが、GUIの作りやすさが魅力でありメモリ管理の煩雑さから解放されたいので、
    .NETを選択していますが、C++での、コーディングは何かにつけ、C#、VBと作法が違いますね。
    それでも、同じ、NETでの少しでも早いのであればと思い質問しました。
    2009年8月10日 1:06
  • もともと.NET環境では、コンパイラがはき出したコードそのものよりも実行時の動的な最適化(JIT)の方に重きを置いています。
    native C++ならコンパイラが50万回ループを出力したら実行時には必ず50万回ループ実行します。.NETなら実行時に無意味と判断されたら実行をスキップして次に進む可能性もあります。

    もう1つ、言語について気にされているのならC#をお勧めします。.NET FrameworkのラインタイムライブラリはC#で記述されているので、コンパイラやランタイムのチューニングはC#が基準になっていると思います。
    # もちろんkazukさんのおっしゃるとおりILが一緒なら違いはありませんが。
    2009年8月10日 3:20
  • ありがとうございます。確かにサンプルもC#が大半ですね。
    2009年8月10日 3:50
  • フォーラムオペレーターの高橋春樹です。

    kazukさん、佐祐理さん
    いつもお世話になっております。

    しょうもとさん
    こんにちは。MSDNフォーラムのご利用ありがとうございます。

    皆様からアドバイスを頂いたと思うのですが、問題解決に繋がりましたでしょうか?
    今回、kazukさんと佐祐理さんの投稿が、有用な情報と思いましたので、
    勝手ながら、回答マークを付けさせてもらいました。

    次回からで良いのですが、問題が解決した場合は、しょうもとさんの方で、回答マークを付けて幸いです。
    もし、解決していない場合は、回答マークを外す事も出来ますので、その時は宜しくお願いします。

    今後ともMSDNフォーラムを宜しくお願いします(^-^)


    マイクロソフト株式会社 フォーラム オペレータ 高橋春樹
    2009年8月17日 9:02