2005年9月30日金曜日

プログラミング言語の比較(5回目)

★測定方法

以下の環境でそれぞれのプログラムを5回動かし、その平均値を測定結果とします。
また、コピー対象のファイルは、約300MBの大きさの物を使用しています。

【測定環境】
OSWindows2000 SP2
CPUPentium3 860 MHz
Memory384 MB

★実行結果

結果は、以下の通りです。

【300MBファイルコピーの実行結果(秒)】

CC++JAVA(io) JAVA(nio)
1回目38.83641.4739.37632.657
2回目38.61541.7542.93227.65
3回目39.99741.58939.88729.683
4回目38.40541.42938.85629.833
5回目39.41641.6541.07929.763
平均39.053841.577640.42629.9172

この結果は、見る人によって、予想通りであったり、意外な結果であったりすると思います。
但し、1つ注意して頂きたいのは、この結果だけで言語の優劣が決まる訳では無いと言うことです。

例えば、今回の計測対象はファイルのコピー処理その物(execute関数の実行時間)だけですが、実際にプログラムの起動から終了までの時間を計測対象にすれば結果は当然変わってきます。

プログラムについても、使用するバッファサイズを適切に設定したり、C/C++ではOSに依存した機能(標準ライブラリ以外の関数)を利用する事でも、性能向上が見込めます。
(今回は比較対象外ですが、その他にも実行モジュールのサイズ、実行中の使用メモリサイズ等、速度以外のパフォーマンスでも違いがあります。)

さらに興味のある方は、これまで示したプログラムを改良したり、他の言語によるプログラムを作成して比較を行ってみて下さい。