- ベストアンサー
VBでVC++の処理速さを実現する
ふと疑問に思ったので質問します。 あくまでも一般論ですが、VBはVC+より簡単だけどデメリットは処理速度が遅いことだそうです。 でもどちらも最終的には機械語?に訳されるんでしょ? じゃあ人間にとって作りやすいVBで作っても、最終的にはコンパイラがVC++と同じ機械語にしてくれたら良いと思うのですが。 どうしてそういう都合の良いことは出来ないのですか?
- みんなの回答 (12)
- 専門家の回答
質問者が選んだベストアンサー
なんかいろいろと話が出てますが。 本質的にVBとVC++の違いは >あくまでも一般論ですが、VBはVC+より簡単だけどデメリットは処理速度が遅いことだそうです。 ですよね。 で、”簡単”というところでVBがどうして簡単なのかを考えていけばわかると思います。 簡単な理由: 1.データ型を意識しなくても自動的に変換してくれる ・・・VBが内部的にがんばって変換する処理を行っている 2.文字列が簡単に扱える。 ・・・VBが内部的に、領域確保やメモリ内のデータのコピーなどの処理をがんばってる。 3.画面にコントロールを貼り付けるだけで、簡単にGUIが完成する。 ・・・VBがフォームの表示等の一般的な必要となる処理、コントロールとのやり取りの処理等をすべて内部的に行っている。 4.ActiveXコンポーネントやCOMオブジェクトが簡単に使える。 ・・・VBが内部的なコンポーネントとのインターフェイス間のやり取りをすべて行っている。 みたいな感じですかね? ランタイムが必要とか、コンパイルが必要とかということとは別問題です。 ランタイムは、あくまでもVBのプログラムで内部的に共通で 行われる処理をまとめてDLL等にしたり、 VBで直接使用しづらい処理をActiveXコンポーネントにすとといったために使用します。 コンパイルも、ちゃんとネイティブコンパイルできますし。 で、このVBの簡単な点が全て実行速度というところに跳ね返ってきます。 2.やランタイムについては、VitaminBBさんはMFCをよく使われているのであれ?と思ったかもしれません。 MFCはCStringで簡単に文字列を扱えますし、MFCにはランタイムDLLも存在します。 実は、MFCもVBほどではないですが、”遅い”です。 フレームワークがC++で書かれているから速いとか言う問題ではなく、単純に、ある程度何でもできるフレームワークだから内部的な処理が多すぎるという点でMFCは遅いのです。 つまり、便利→内部的な処理が多い→遅いということになります。 #ただ、MFCの場合は、画面まわり、すなわちユーザーインターフェイスをMFCに任せ、演算などの高速処理を必要とするビジネスロジックはMFCを使わないということもできるので、このあたりがVBと違うところです。 VBで速くしようとすると、画面はVB、ビジネスロジックはCのDLLなんてことになります(よくありますが)。
お礼
回答ありがとうございます。