• ベストアンサー

VBでVC++の処理速さを実現する

noname#7749の回答

noname#7749
noname#7749
回答No.2

> どうしてそういう都合の良いことは出来ないのですか? ランタイムライブラリがないと動作しない設計 (仕様) だからです。 ランタイムライブラリや各種コンポーネントはソフトウェア開発者の利便性 (高生産性、ソフトウェア部品の再利用性) のために提供されているものです。 つまり、利便性と実行ファイルのパフォーマンス (処理速度、ファイルサイズのコンパクトさ) はトレードオフ関係にあります。 無論、VC++でも各種コンポーネント (MFC等?) を使うことは可能です。 というより、生産性を考えると、コンポーネントを一切使用しないでソフトウェアを作るのは現実的ではないでしょう。 こうしたコンポーネントを使用すると、VC++ / VB の速度差は少なくなるものと思われます。 例えば、ADOを介してSQL Serverに接続し、データベースを操作する、といったアプリケーションでは、処理の大半はミドルウェアとDBが実行することになるため、フロントエンドのアプリケーションがVC++ / VB (またはDelphi) のいずれであっても性能に大差はないでしょう。 もう一点、VBのパフォーマンス上のボトルネックで無視できないのは文字列の処理です。 VBの文字列連結演算子は内部的にはメモリ領域を動的に確保する動作となるため、多用すると必然的に処理速度が遅くなります。 (他の文字列処理についても同様?) これを回避するには、文字列連結演算子を極力使用しない、Byte型の配列を使用する、といった工夫が必要になります。 しかし、コーディングの容易さ、可読性という観点からみると、RADツールを使用する利点が失われる、とも言えます。 ※ 現実の社会ではソフトウェアの処理速度が遅い原因の90%以上は、プログラミングツールではなく、能力の開発者の能力にあります。 (VBの性能を云々する人ほど効率、品質の悪いコードを書く傾向が強い) 以上、どシロウトの意見でした。 (専門家のフォローを希望します)

VitaminBB
質問者

お礼

回答ありがとうございます。 そうですね。速度差もあえて上げればというくらいで、そう大差ないのですね。 そうすると、VC++のメリットってなんなのでしょうか? 趣味でプログラムしている人のレベルでは、 単に、俺ってちょっと難しい言語でプログラムしてんだぜ。とか、プロが使うソフトを使ってるんだぜ。と自慢できるくらいでメリットは無いということなの?

関連するQ&A

  • VB6, VB2005,VC# どれを学習したらよいでしょうか。

    VB6, VB2005,VC# どれを学習したらよいでしょうか。 やりたいことはデータベースやテキストファイル処理、インターネットコネクションのプログラミングです。 仕事でExcelVBAを時々使うので、以前から持っているVB6かと思ったのですが、なぜかMSDNがなくリファレンスがなく微妙です。本かウェブしか頼れない・・・。 ある程度の処理速度を求めていますのでExcelVBAではない方がいいのですが、これからのことを考えたらVB6よりもVB2005でしょうか? それともどうせVB2005はexcelとは大幅に文法が変わってしまうのだからC#? いろいろ調べるほどわからなくなってしまいました。 なおエクセルVBAも本に一通り書いてあることも満足にできない程度です・・・。(こちらにも役立てられるとさらにうれしいです)

  • VC++とVC#について

    VC#が出て久しいですよね。 MSが推奨する言語なのでそちらに移行するものと思っていましたが、処理速度が遅くなるという欠点があるそうですね。 プロの現場ではVC#へ移行しつつあるのでしょうか? それともまだまだVC++のほうが根強い人気なのでしょうか? いろいろなご意見お待ちしてます。

  • C言語やC++、VC++について

    C言語やC++、VC++について C言語やC++、VC++などはIL コードと呼ばれる中間言語が作成されるのでしょうか?それともコンパイラーがネイティブコードに変換されるのでしょうか?でもネイティブコードに変換すると機械語なので互換性がないのではないのでしょうか?それなのになぜ他のwindowsのパソコンで実行できるのはなぜなのでしょうか?そこら辺はどうなっているのでしょうか?

  • .NET C++の処理速度

    最近.NETについて調べていました。 .NETではコンパイル時にマネージドコードと呼ばれる中間ファイルが作成され、 それが.NETFramework上で動くという仕組みのため、C++で書こうがVBで書こうが 最終的にできあがるものは同じものになるということが分かりました。 私は、Cが有利な点は(Javaなど他の言語に比べ)処理速度が異常に早いことだと思っていましたが .NET上で動く場合はC++もVBも処理速度に差が出ることはあまりないのでしょうか? また、.NET、JVM、ネイティブのCの3つを比較した場合、 どのくらい処理速度に差があるでしょうか?(大雑把でもいいので) 私は [ネイティブC] >>>超えられない壁>>> [.NET] > [JVM] くらいかと思っているのですが‥ 以上、よろしくお願いします。

  • 混ぜちゃダメなんですか?

    プログラミングについて疑問があります。 最終的に機械語に変換されるなら、javaとRubyとかPHP、他の言語を混ぜたプログラムは作れるんですか? そういうの、やった人とかいるのでしょうか?  (言語って沢山あるんだ~、コンパイラって何?という超初心者レベルです。  お返事は素人が理解しやすいように書いて頂けたら嬉しいです。  よろしくお願いします。)

  • シェルとカーネルの概念とプログラムの処理の流れ

    興味本位で「プログラミング」について、調べ学んでる内にひとつの壁にぶつかりましたので質問させていただきます。 質問内容は「シェルとカーネル。そしてアプリケーション」になります。 素人ながら現在持っている論理を下記に列挙します。誤認識などあれば指摘いただければ幸いであります。 狭義での論争は、避けたいので、広義として理解頂ければと思います。(狭義や曖昧な点においてもある程度学習済み) 1. プログラミング言語には、低級・高級言語があり、ハードよりのC言語(影響下のC++, Objective-C)で作られたプログラムの実行速度は速い。 2. プログラム処理系には、インタプリタ・コンパイラがあり、一般ユーザーが使用するアプリケーションのほとんど(.exeなど)がコンパイラアプリケーション。 3. JavaなどVM環境下動作するアプリケーションは、中間言語で実行される。 4. OSには中核であるカーネルがあり、カーネルは人工言語(コンピューター言語)を機械語に訳し、各リソース(CPU・RAMなど)に処理を実行させる。 5. カーネルはシェルに覆われており、実際のユーザー側の処理のリクエストは、シェルを介して行われる。 6. シェルには大別して、CLI(CUI)とGUIがあり、CLIシェルはプロンプトが表示されるコマンドラインインタプリタ。 7. GUIシェルは、OSがオペレーションの意から、OSの各種機能(Windows System, エクスプローラー等)。※ 私は理解を容易する為にOSそのものをシェルと捉えてます。 長くなりましたが、上記を踏まえた上での質問が下記になります。 Q. iTunes, Word, などの各種アプリケーションの各種操作(処理、実行)というのは、コンピューター言語でシェルを介し機械語でカーネルまで橋渡しされるのでしょうか? なぜこのような質問になるかといいますと... プログラミング言語は機械語にコンパイルして、はじめてコンピューターに理解してもらえる事は百も承知です。 プログラミング言語で制作されたアプリケーションの処理や実行は当然、コンパイル済みの機械語で行うものと認識しております。(ここでは中間言語は除く) ここで冒頭に述べた壁に当たりました。洒落ではなく、私の中で「殻」もとい「壁化」してしまったシェルの存在です。 現在、持ち合わせてる論理から考察すると、機械語で実行された処理をシェルを介す意味がどこにあるのか?それとも介さずカーネルにそのまま引き渡してるのか? 私が間違っており、そもそも制作されたアプリケーションの処理や実行は、コンピューター言語であり、それをシェルを介しカーネルという流れがあるのならば、コンパイラの存在意義が分かりません。 本来はもっと自分が思ってる事を言語化出来ればいいのですが、これが現時点で精一杯です。

  • .NET frameworkについて

    .NET frameworkとはJVMとほとんど同じような気がするのですが、いろんな言語が使えること以外に何かメリットあるのでしょうか? それと、たとえば、VC.NETで作ったプログラムはコンパイラで中間コードになって、実行時に.NET frameworkでインタプリタみたいに機械語に直して実行しているのでしょうか?

  • Cで作成したDLLをVBで呼出

    Cで作成したDLLの関数をVB6.0から呼び出す事ができず、悩んでおります。 ご教授お願いします。 どの様な関数を呼び出そうとしているのかというと、以下の通りです。 <DLL Cで作成(コンパイラVC6)> void WINAPI hoge(BSTR pgname,BSTR fmt,...){ ~処理~ } /* 宣言では頭にDLLExport*/ <呼出側 VB6.0で作成> '宣言 Public Declare Function hoge Lib "hoge" _ (ByRef pgname as String , _ ByRef fmt as String , _ ParamArray args()) '呼出 call hoge("foo","baa","array1",2) この様なコードを書いております。 C側、VB側ともに固定数の引数にしてみたところ、 通ったので「ParamArray args()」の定義が違うのではないか・・・?と思っているのですが、 どの様に宣言したらよい物なのでしょうか? もしくは、そもそも全然違う箇所を間違っているのでしょうか? 宜しくお願いします。 ※ 説明の足りない箇所があれば、仰ってください。

  • 各言語の特徴

    いろんな言語の特徴が知りたいです。 C:処理速度がはやい VB:開発効率がいい VC++:ネットワークに強い JAVA:ネットワークに強い? Delphi: COBOL: 他たくさん知りたいですσ(^^) 教えてください、お願いします(^^)

  • VBでフォントデータを得る方法

    PC上で動作する言語としてはVBだけが少々わかる程度です。 このVBだけを頼りに、文字のフォントデータを取得したいと考えています。 フォントとしては16x16で、フリーで装飾的要素のない一般的なものが希望です。 このデータによりLEDマトリクスに文字を再生したいのです。 用途としては商用です。 文字のシフトJISコードを得ることまではできました。 このコードによりフォントデータを得るためには、そのファイルそのものが VBで扱えるようになっていなければならないわけですが これが見当たりません。 ・・・というか、ここで以前フリーのフォントを教えていただいたのですが インストールさえできませんでした。 (なぜできないかを説明するのも、わからない用語が多すぎてできません) VBだけで処理できる都合のよいファイルがありましたら教えてください。 それともVBの初歩レベルだけでは無理でしょうか?