★測定方法
以下の環境でそれぞれのプログラムを5回動かし、その平均値を測定結果とします。
また、コピー対象のファイルは、約300MBの大きさの物を使用しています。
OS | Windows2000 SP2 |
---|---|
CPU | Pentium3 860 MHz |
Memory | 384 MB |
★実行結果
結果は、以下の通りです。
C | C++ | JAVA(io) | JAVA(nio) | |
---|---|---|---|---|
1回目 | 38.836 | 41.47 | 39.376 | 32.657 |
2回目 | 38.615 | 41.75 | 42.932 | 27.65 |
3回目 | 39.997 | 41.589 | 39.887 | 29.683 |
4回目 | 38.405 | 41.429 | 38.856 | 29.833 |
5回目 | 39.416 | 41.65 | 41.079 | 29.763 |
平均 | 39.0538 | 41.5776 | 40.426 | 29.9172 |
この結果は、見る人によって、予想通りであったり、意外な結果であったりすると思います。
但し、1つ注意して頂きたいのは、この結果だけで言語の優劣が決まる訳では無いと言うことです。
例えば、今回の計測対象はファイルのコピー処理その物(execute関数の実行時間)だけですが、実際にプログラムの起動から終了までの時間を計測対象にすれば結果は当然変わってきます。
プログラムについても、使用するバッファサイズを適切に設定したり、C/C++ではOSに依存した機能(標準ライブラリ以外の関数)を利用する事でも、性能向上が見込めます。
(今回は比較対象外ですが、その他にも実行モジュールのサイズ、実行中の使用メモリサイズ等、速度以外のパフォーマンスでも違いがあります。)
さらに興味のある方は、これまで示したプログラムを改良したり、他の言語によるプログラムを作成して比較を行ってみて下さい。