※このコンテンツはすでに古くなっています。現在では成立しない可能性もありますし、そもそも速度で比較する理由も今やないと思われます。
なんか、調べてみました。おもしろそうだったんで。
VBの速度≪Cの速度というのはもはや当たり前すぎるのでメインはActiveBasicですね。
(06/03/23追記) Visual C# Express Editionを導入したので追加してみました。
タダで手に入るくせにVC6StandardEditionやVB6LearningEditionよりずっと高機能です。生意気な。
まずは空ループ
Visual Basic | Visual C++ | Active Basic | C# |
---|---|---|---|
IDE上:18.2秒実行ファイル:13.3秒 | デバッグコンパイル:4.4秒リリースコンパイル:4.0秒 | デバッグコンパイル:18.2秒リリースコンパイル:18.0秒 | デバッグコンパイル:4.2秒リリースコンパイル:2.0秒 |
あらら、VBとAB、遅いですね~。
VBもABも空ループに関してはほぼ変化なし。
VBが遅いというのは有名だけどABも負けず劣らず遅いんですね。
どれも最適化はしていませんが(というよりできないのですが)、それなりに差は出るようですね。
またあとで実用的なアルゴリズムやAPI呼び出しについても調べてみようと思います。
(06/03/23追記) C#追加しました。
なんか異常事態です。ありえないスピードが叩き出されました。
そういえば最適化オプションをつけてたんだっけ。恐るべし最適化。
バブルソート
クイックソートはアルゴリズムを忘れてしまったので仕方なく忘れてもすぐ考え出せるバブルソートで。
Visual Basic | Visual C++ | Active Basic | C# |
---|---|---|---|
IDE上:1.755秒実行ファイル:1.615秒 | デバッグコンパイル:0.115秒リリースコンパイル:0.115秒 | デバッグコンパイル:0.812秒リリースコンパイル:0.778秒 | デバッグコンパイル:0.171秒リリースコンパイル:0.062秒 |
データは圧縮ファイルの最初の16KBを4096項目の32ビット符号付き整数型配列に入れて使っています。読み込みの時間は計算に入れていません。
しかし分かりやすい結果が出ましたね。
やっぱりActiveBasic速いです。これでVBに負けたら廃棄処分にしようと思ってました。さすがです。謳い文句に嘘はありませんでした。
どうやら変数への代入が速いみたいですね。配列であるということも影響しているのでしょうか。
Cのほうは速すぎて話にならないのでもう何も語りません。
そこそこ速くてそこそこなじみやすいという点でActiveBasicはよいのではないでしょうか。
(06/03/23追記) やっぱり最適化パワーすごいです。
こんなすごいんだったらVC++も最適化のできるProfessionalEditionにしてりゃよかったな。
(24/09/10追記)バブルソートって書いてたけどたぶん選択ソートだこれ。