• ベストアンサー

managed-C 使ってますか?

唐突な質問で恐縮です。 私、制御系or技術計算系ソフトウェアをC/C++で開発しているものですが、.NET環境での開発にmanaged-C の利用が必要ということで、二の足を踏んでいます。 その理由としては、 1、計算速度が非常に重要なので、中間コードベースの.NETは遅い(?推測?) 2、unmanaged-C クラスをmanaged-C クラスに書き換えるのはすごく手間かかりそう 3、.NETの中でどんな処理されているのか見えにくいので、メンテがたいへんそう。 そこで、皆様の意見を伺いたいのですが、 managed-Cで開発されている方いらっしゃいましたら、どんなところがmanaged-C開発のメリットでしょうか? なんでもかまいませんので、お教えください。 よろしくお願いします。

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

  • ベストアンサー
  • sha-girl
  • ベストアンサー率52% (430/816)
回答No.3

1、計算速度が非常に重要なので、中間コードベースの.NETは遅い(?推測?) 最適化コンパイルしたC/C++より遅くなるのは仕方ないことです。 ですがVB6ほど遅いわけではありませんし単純計算ならそれほど遅いわけではありません。 究極はインラインアセンブラですが。 気になるのはJavaもそうですが最初の起動が遅いことですね。 2、unmanaged-C クラスをmanaged-C クラスに書き換えるのはすごく手間かかりそう 書き換える理由がわかりません。共存ができるのに書き換える必要がありますか? 3、.NETの中でどんな処理されているのか見えにくいので、メンテがたいへんそう。 むしろ自分がメンテしなくていいというのが.NETのメリットです。既にあるものを利用できれば開発期間を短縮出来ます。 ただNet内部にバグがあったらMSに報告するということになります。

egeg007
質問者

お礼

回答ありがとうございます。 とても参考になりました。 ちなみに、2は私もmanaged-cの勉強を始めたばっかりなので、よくわかってないのが現状です。 参考程度に、 class X { char m_str[100]; }; を __gc class X {(クラス内同定義)} にするとだめだったので、書き換えが必要なのかな~?というレベルの認識です。

その他の回答 (3)

  • sha-girl
  • ベストアンサー率52% (430/816)
回答No.4

既存のクラスに__gcを使いたいのなら __gc class X { char m_str __nogc [100]; }; 或いは __gc class X { char m_str __gc []; }; にする必要はあるみたいですね。

  • terra5
  • ベストアンサー率34% (574/1662)
回答No.2

C#とVB.NETは使いましたが、managedだからという利点は感じたことは無いですね。 まあ、昔ならVB+C/C++のDLLでやっていたことが、C/C++だけで出来るのがメリットっぽい気がする程度です。 あとは、原理的にはWindows以外でのプラットホームでも動かせることですかね。 速度はだいぶ遅くなるでしょうね。配列も全てクラスとして実装されているし。 書き換えの手間は、クラスによるのでは? 計算関係のクラスならそれほど手間にならないような気がしますが。 それと、マネージドとアンマネージドでは変数の扱いが違うので、インターフェイスに悩まされました。 結局変換が必要になるので。 そのためのクラスなどは用意されていますが、これもオーバーヘッド要因ですね。

egeg007
質問者

お礼

回答ありがとうございます。 >あとは、原理的にはWindows以外... これって、大きなメリットですね、 ありがとうございます。

  • jacta
  • ベストアンサー率26% (845/3158)
回答No.1

マネージドC++は次のバージョンから大幅に仕様が変更されるので、現時点から手をつけるのは余りお勧めしません。 計算速度が必要なのであれば、アンマネージドコードでコア部分を実装して、GUI等の.NETに依存する部分だけC#かVBで実装するというのはいかがでしょうか?

egeg007
質問者

お礼

早々の回答ありがとうございます。 次のバージョンで変更されるのは初耳でした。 MS のホームページ要チェックですね。。。 >計算速度が必要なのであれば、アンマネージド... 同意見です。 ただ、作成するソフトがエンジン部分ばかりなので、GUIの開発はほとんどありません。 Matrixソルバーとか、n次方程式の解...とかの計算ばかりなので、やはりマネージドC++の採用は少し見送ってみます。 ありがとうございました。