• ベストアンサー

VBは速度が遅い?

VisualBasic6でプログラムを組んでいて疑問がわきました。 主に計算主体の場合、C言語と比べて速度が遅いと言われますが、どうしてVBで作ると同じアルゴリズムなのに 速度が遅いのでしょうか? VBで早くする方法が知りたいです。 ActiveBasicというものがあり、そちらで動作させると 早いといううわさがあり、本当かわかりませんが、 どうなのでしょうか?VBのコンポーネントは使えるのでしょうか? ※昔、Delphiと同じアルゴリズムで速度を比べたら Delphiの方が早かったです。理由はわかりませんが・・・

  • kyoui
  • お礼率0% (0/80)

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

  • ベストアンサー
noname#25358
noname#25358
回答No.3

 Cコンパイラは通常、伝統的にネイティブコンパイラになります。  最適化コンパイラなどが存在することからも分かるように、CPUの処理オーダーなども気にして厳密に作られます。  ですがネイティブコンパイラは、機械語の特性をダイレクトに引きずってユーザーフレンドリーでなくなってしまうという特徴があり、どうあっても玄人向け言語になってしまうのです。  つまり、「○○のときは××しなければならない」という言語的な制約が増えてしまうのです。  それに対してBASICは、文字通り「分かりやすく、作りやすい」ことが一番重要であるため、中間言語をアセンブリングしながら実行する形態をとることが多いです。  それゆえ、デバッグするために何度もコンパイルを繰り返しても速度上のストレスをほとんど感じませんし、要件定義が同じものを作っても圧倒的に開発速度が速いです。  「ある特定のアルゴリズムを組むと、言語仕様上は大丈夫なはずなのに動かない」というトラブルもほとんど存在しません。  が、その代わりに本番環境でも遅いのです。  Delphi は、たしかネイティブコンパイラであるケースが多いはずです。(未確認)  もしかするとC言語ほどにはCPUオーダーを気にして作られてはいないのかもしれませんが、それでも相応に速くなります。  ActiveBasicは、ディスカバーソフトウェア社のネイティブコンパイラです。  「分かりやすく使いやすいくなければならない」というBASICの基本理念は、「とにかく速い」というネイティブコンパイラの思想とは真っ向から対立していますが、まぁ、なんとかしたんでしょう。  たぶん速いです。でも実際使ってみると、Visual BASIC ほどには使いやすくないことが分かるはずです。なぜなら、それがネイティブコンパイラの宿命だからです。

その他の回答 (5)

  • chie65536
  • ベストアンサー率41% (2512/6032)
回答No.6

ネイティブコンパイラがどうだとか、言語の制約がどうだとか、機械語の特性がどうだとか書かれた回答がありますが、何か勘違いしているようなので補足を。 >ですがネイティブコンパイラは、機械語の特性をダイレクトに引きずってユーザーフレンドリーでなくなってしまうという特徴があり 機械語の特性とユーザーフレンドリーの話は、まったく別次元の話。 現在の最新コンパイラは、コード生成ルーチン、最適化ルーチンが賢く、機械語の特性は殆ど表面には出て来ません。逆に、最近のCPUはC言語に特化した命令コードを持つくらいで、機械語の特性云々の主張は実状と真逆に近いです。 また、ユーザーフレンドリーかどうかは、エラーメッセージの親切さ、デバッグのし易さ、GUIの作りなど、言語特性とはまったく無関係の部分が影響します。 >「○○のときは××しなければならない」 これはどんな言語、どんなCPUを使ったって同じです。制約はどこにだって付いて回ります。言語により違うのは「制約を回避しやすいか、回避しにくいか」だけの違い。 「コンパイラは難しい、インタプリタは簡単」と言われる理由を強いて挙げるなら ・コンパイラは、ちょっと直しただけで全部コンパイルしなければならず、使われない一部分でも不完全なままにしておく事が出来ない。それに、ライブラリやらインクルードやら覚える事が多い。実行時にエラーがあっても自動的に止まってくれない ・インタプリタは、ちょっとづつ直し、ちょっとづつ実行して試しというのがすぐに可能で、しかも、未完成で使わない部分があっても未完成のまま放置が可能。実行時にエラーがあったら止まってくれる の違いしか存在しない。 現在のコンパイラはそういうレベルまで来ていて、GUIで開発している限り、極論を言えば「インタプリタとコンパイラの違いは、実行時に早いか遅いか、コンパイル作業があるかないか、実行時エラーで止まるかどうか、実行時に簡単に止める事ができるかどうか」だけの違いしか無いと言えます。

  • chie65536
  • ベストアンサー率41% (2512/6032)
回答No.5

Delphiは「コンパイラ言語」です。 VisualBasicは「インタプリタ言語」です。 コンパイラ言語は、コンパイルする事によって可読言語を機械語に翻訳し、翻訳が終った機械語をCPUが直接実行するのでかなり高速です。 一方、インタプリタ言語は、実行する時にいちいち可読言語を一字一句解釈しながらエラーが無いか調べつつ、命令語を実行していくので、とても低速です。 なお、ActiveBasicはBasicと名前が付いていてもインタプリタではなくコンパイラなので実行が早いのです。 Delphiも前述の通りコンパイラなので実行が早いです。 なお、VBも「コンパイルして実行形式ファイルにする」と言う作業をすれば多少は早くなります。但し、コンパイルしてしまうと「一行づつステップ実行して確認」などのデバッグが一切出来なくなりますし、コンパイル前のソースプログラムを残しておくのを忘れると、二度と修正できなくなります。

  • porilin
  • ベストアンサー率22% (142/632)
回答No.4

3です >コンパイラ言語は、コンパイル時に、全てを翻訳しているため、実行時の負担が軽減されるのです。 VBはコーディング時はともかく、実行時はコンパイルして実行するので、インタープリタ言語とは言い切れません。 コンパイルして実行はしますが、1に書いたとおり、手順が増えているので、実行ステップ数が多い為、遅くなるのです。

  • kokorone
  • ベストアンサー率38% (417/1093)
回答No.2

インタープリタ言語と、コンパイラ言語の違いです。 コンピュータは、最終的には、アセンブラ言語(16進コード)で 動作します。 インタープリタは、実行時に1行1行アセンブラに翻訳しながら実行 します。 コンパイラ言語は、コンパイル時に、全てを翻訳しているため、実行時の負担が軽減されるのです。

  • porilin
  • ベストアンサー率22% (142/632)
回答No.1

基本的には人間の言葉に近いほど、翻訳時にプログラムがいろいろな解釈をさせられるからです。 同じ足し算(1+1)でも、マシン語ならadd命令1個ですみます 言語が高級になるほど、変数Aの場所を確保し、代数1を入力し、文字変数か数字変数かチェックし・・・と長くなってゆきます。

関連するQ&A

  • 言語の実行スピードで早い順に並べてみたら

    VisualStudio2005とVisualStudio6を持っていますが、同じアルゴリズムで書かれたプログラムで実行速度が速い順を知りたいのですが 私の主観ですが(抜けているものがありましたら追加してください。) 以下のような予想になります。 VC2005++ VC6++ Delphi BCC C# VC.NET 2005 VB.NET 2005 Visual J++ VisualBasic6 皆さんの意見が知りたいです。(Lispやその他の言語もご存知な場合もよろしく。) また、アセンブラ(マシン語)の埋め込みができる言語も知りたいです。昔、下のような記述ができた言語があったような記憶がありますが 今でもどの開発ツール(ボーランド社など他のメーカーも含めて)で可能なのでしょうか? asm{ mov ax, 4000h; int 0x21; }

  • 今、開発言語をどれにしようか、迷っています。

    マシンはデュアルコアのAthlon64 4800+は 決定しているのですが開発言語をどれにしようか、迷っています。 Windows: ASM, C, VB, Delphi, C++Builder, VC++, Java, VB2005, VC2005, C# ... Linux:GCCが良いよでしたら、Linuxにするかもしれません。 計算とグラフ表示が主な処理で、なかなかアルゴリズムが難しく、開発途中で試行錯誤しますので、開発のし易さも選ぶポイントです。 以下の優先順位です。 1番目:実行速度の早いもの(最適化など) 2番目:Profile機能がある(サードパーティでもよい) 3番目:ソースの記述量が少ない。(簡単) 4番目:書籍や情報が多い 5番目:汎用性が高い(今後のメンテナンスも考えて) 1番目の実行速度にこだわるのは、VB6でプログラムを書いて実行させたところ、昔BCCで書いていたプログラムより遅かったので驚愕しました。 簡単なのはよいのですが、速度が遅いのとプロファイル機能が手に入れなかったので、VisualBasicは断念しようと思います。 仕事とは直接関係ないのですが、今後の参考にしたいので、皆さまのご意見をお聞かせください。

  • VBA経験者がVB2005を使えますか?

    今までExcel2000のVBAを使って簡単なプログラムを作っていました。今度本格的にVBでプログラムを組みたいのですが、Excel2000のVBAとVB2005はまったく違うものなのでしょうか?(言語の書式など) やりたいことはネット上からデータ(数値や文字列など)を収集して計算することです。株情報などのデータを収集して最適な結果を導き出すもので、今まではExcelで手動で入力していたものを自動化したいと思っています。 また、この場合はVisualStudioではなくてVisualBasicだけを購入すればいいのでしょうか? よろしくお願いします。

  • DelphiとVBの開発コスト

    あるシステム開発をベンダ-に出したところ VBでの提案があったのを蹴って、Delphiでの 開発を行うように現在交渉中です。  ベンダ-がDelphiでの開発はコストがかかる と難色を示してますが、果たして本当のところ そうなのでしょうか?  コンパイル、デバック作業にコストが大と 言われてますが、逆にVBでありがちなプログラム 実行後の結果をみて構文の誤りの発見されるとい うのが、少ないと思うのですが・・ OS環境の影響を受けず、インタプリタよりはるかに 実行速度が速いDelphiで行うのがベストのシステム なのですが(広く配布するプログラムでクライアン トの環境を把握出来ない)  **(実はこのベンダ-VBでの開発経験は 豊富ですが、Delphiでの開発はないらしいです。)  

  • VB6で作成したOCX(ActiveX)について

    お世話になります。 下記項目に対しての知識が無くて困っております。 VB6.0で作成したOCX(ActiveX)についてですが、VC++やVB以外のプログラム言語で使用できるのでしょうか? 今回はDelphiでの使用を検討しておりますが、環境が無い為試すことができません。 ご存知の方がいたら、ご教授お願いいたします。

  • VB vs Delphi

     以前にも、どの言語がよいか質問をさせていただいたのですが、結局ほかの言語へ移行せず今の、日本語プログラミング言語を、使い続けていました。  しかし、使える言語が1つというのは何かと不便で、今度の冬休みから少しずつ学習するのもいいかなと思いました。そこで、今度こそ本当に別の言語へ移ろうと思い、案を二つに絞りました。それが、VisualBacicとDelphiです。  一応、その二つについては、 *VisualBacic  ・メリット   情報が多い(書籍など)   中学生のため、VS.NETを、5000円で買える   (http://www.microsoft.com/japan/msdn/student/premium/)  ・デメリット   動作が遅い   ランタイムが必要 *Delphi  ・メリット   動作が速い   コンパイルが早い   ランタイム等が不要  ・デメリット   情報が少ない   有料版を購入すると、かなり高い の、用に理解しています。 当初は、VBの方が、学校でBasicを学習するので予習になる、と思っていたのですが、調べてみると、元祖BasicとVBでは、かなり違うという情報をどこかでみました。 そこで、現在、どちらかあるいは両方を利用している人などから、ご意見を聞きたいのですが。よろしくお願いします。

  • 部活で使う言語

    今度部活で、ソフト作りをしようとプログラミング言語を探しています。候補としては、Activebasic C++ Delphi HSP VB.netなどがあがっています。 最初は、情報の授業で、VBAを使うということを見越して、構文が近いであろうVB.netにしようかと思ったのですが、配布した際に.net framewark を導入してもらわないといけないことがネックです。 また、C++は時間もあまりないためかなり厳しいかなと思っています。 delphiは.netとwin32の両方に対応しているのがうれしいのですが、VB.netやC++以外の言語のように、C++やVB.netほど、資料・書籍がないということがネックです。 デメリットをあげてもきりがないで、どこかで妥協しようと思うのですが、これから習得するならばどれが良いのでしょうか。 用途はWindows上で動作する、ゲームまたはその他アプリケーションソフト(ランチャーなど)を予定しています。 よろしくお願いします。 補足:できれば資料・書籍以外の出費は避けたいです

  • C#のクラスを配布しているサイトはありますか?

    最近C#に触っています。 VB,Delphiなど各プログラム言語において、 コンポーネントやクラスを収集して配布しているサイトが幾つかありますが、 C#においてそういったサイトはあるのでしょうか? Googleで検索してみましたが、いかんせんキーワードが悪いのか、見当たりませんでした。 まだそういったサイトが開設されていないのかも…? ご存知の方いらっしゃいますか?

  • Delphiの学習に適したWebサイトや書籍を教えてください

    お世話になります。 このほど、無料で配布されているTurbo Delphi Explorerをダウンロード・インストールし、 久々にWindowsプログラミングの世界に足を踏み入れました。 過去にVBでアプリケーションを製作していた経験があり、 現在は主にPHPでの開発を行っていますので、プログラミングの基礎的な知識はありますが Delphi言語は今まで接してきた言語とかなり雰囲気が違うため戸惑っています。 // 強いて言うならVBとちょっと似てるかな? また、コンポーネントが沢山そろっていますがどれがどんなコンポーネントで、 どのプロパティを操作すれば何が出来るのか……といったことが現在すべて手探り状態です。 今後、DelphiでWindowsアプリケーションを製作する上で参考になる書籍やWebサイトをご存じの方がいらっしゃいましたら教えて頂けませんでしょうか。 よろしくお願いします。

  • VB6から#C or .NET VB どちらが易しい? OS or 言語

    マシンが64bit対応なので VisualBasic6から #Cか .NET VBに書き換えて64bitで動作するように検討しています。 VS2005 Proは購入済みで、OSはWindowsXP x64 proか Windows2003を検討しています。どちらがよいかわかっていないのですが、まず最初にプログラムをどちらにコンバートするか悩んでいます。 いっそC#の方が将来性があるのでしょうか? また、.NET VBの方が書き換えが簡単でしょうか? 以前、VB6のプロジェクトファイルを開こうとしたら なんか変換したような気かしましたが、フォームやメインが無かった?ようなへんてこなCが出来上がりました。 VBからの移行された方でどちらを選んだのか知りたいです。