重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

VisualStudio2005とVisualStudio6を持っていますが、同じアルゴリズムで書かれたプログラムで実行速度が速い順を知りたいのですが

私の主観ですが(抜けているものがありましたら追加してください。)
以下のような予想になります。

VC2005++
VC6++
Delphi
BCC
C#
VC.NET 2005
VB.NET 2005
Visual J++
VisualBasic6

皆さんの意見が知りたいです。(Lispやその他の言語もご存知な場合もよろしく。)

また、アセンブラ(マシン語)の埋め込みができる言語も知りたいです。昔、下のような記述ができた言語があったような記憶がありますが
今でもどの開発ツール(ボーランド社など他のメーカーも含めて)で可能なのでしょうか?

asm{
mov ax, 4000h;
int 0x21;
}

A 回答 (3件)

> 条件は、バブルソートにかかる時間がどの処理系が早いかです。



提示されたソースであれば、Visual C++(ネイティブコードであれば、バージョンはあまり関係ないと思います)が一番高速になりそうです。
同じC/C++でも、最適化性能の関係でBorland C++ Compilerは遅くなります。また、Borland C++ Compilerの場合、C++はCより遅くなる傾向にあります。なお、.NETやJavaはどうしても不利になりますね。
    • good
    • 0
この回答へのお礼

詳しい回答ありがとうございます。ボーランドが遅のは残念ですね。
昔Turbo Pascalの時代で遊んでいた時は、実行速度とは関係ないですが、コンパイルが早いのでファンでしたが、その後コンピュータから離れていましたので、.NETやJavaがわからずなかなかとっつきにくいです。

今、C#とVB.NETを覚えようとしていますが、実行速度はどちらが速いのでしょうか?C#はDelphiに似ているように感じますが、将来Javaも学びたいのでC#の方が(実行速度を考えないと)良いのでしょうか?

お礼日時:2007/02/12 21:34

手間を気にしないのなら、アセンブラが一番速いと思います。

    • good
    • 0

> 同じアルゴリズムで書かれたプログラムで実行速度が速い順を知りたいのですが



条件が漠然としすぎている気がします。
確かに、実行速度に最も大きな影響を与えるのはアルゴリズムでしょうが、そこから先はコーディングレベルのテクニックや、言語・処理系の仕様がかなり効いてきます。具体的にどんなコードを比較するのかを明らかにする必要があるでしょう。

たとえば、ニュートン法で整数の平方根を求めるのであれば、C++でテンプレートメタプログラミングによって実装するのが最速(実行時間ゼロなので)です。ところが、同じニュートン法で平方根を求める場合でも、拡張倍精度浮動小数点数を使うのであれば、(インラインアセンブラを使うのでない限り)Visual C++よりDelphiの方が高速になる可能性が高いはずです。
    • good
    • 0
この回答へのお礼

>条件が漠然としすぎている気がします。

そうですね。特殊な計算なら処理系によって有利不利がありますね。

条件は、バブルソートにかかる時間がどの処理系が早いかです。
以下、汚いソースですが、このアルゴリズムでの計測を前提とします。

//準備で共通データ作成
int NumMax = 10000;
int a[NumMax];
// ランダム初期化
for(long i=0; i < NumMax; i++){
a[i] = ランダム値(1から100)
}

で作成した1万個のランダム値の入った配列を作成し、
この同一データを各言語で

10億回バブルソートしてかかった時間などです。

//ここからの時間

int Loop1Max = 10000;
int Loop2Max = 10000;
int b;

for(int lp1=0; lp1<Loop1Max; lp1++){
for(int lp2=0; lp1<Loop2Max; lp2++){
// バブルソート(降順)
for(int i=0; i<NumMax-1; i++){
for(int j=1; j<NumMax; j++){
    if(a[i] < a[j]){
b = a[i];
a[i] = a[j];
a[j] = b;
}
}
}
}
}

// ここまで

お礼日時:2007/02/11 17:35

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!