• 締切済み

速度比較用コードってこれでいいんですか?

いろんな言語で同じ処理を行わせて速度を測定し、結果もっとも良いパフォーマンスのする言語でコーディングをしようとしています。しかしネットでいくら調べても見つかるのは速度比較の結果のみで、どんなコードで測定したのかは書いてありません。一応、自分なりに考えて以下のようなPHPコードを組んだのですが、このような感じで良いのでしょうか?冒頭で「いろんな言語で」と言いましたが、ここではPHP限定とします。 <? $arr; define("max", 100000); for($i=0; $i<max; $i++) { $arr[$i] = $i; } $mode = 1; $beforeStamp = microtime(true); if ($mode == 0) { for($i=0; $i<max; $i++) { print $arr[$i]."<br />"; } } else if ($mode == 1) { $i = 0; while ($i < max) { print $arr[$i]."<br />"; $i++; } } else if ($mode == 2) { foreach($arr as $value) { print $value."<br />"; } } $afterStamp = microtime(true); print ($afterStamp-$beforeStamp)." / ".$afterStamp." / ".$beforeStamp; ?> 概要ですが、定数maxに設定した数(ここでは10万)の配列を生成し、それを呼び出すというプログラムです。$modeに代入する数値0,1,2のいずれかで呼び出し用メソッド(?)を決め、全配列の中身を呼び出します。メソッド(っていうのも違う気がしますが)はそれぞれfor文、while文、foreach文になっています。これらの処理にかかる速度を測定し、配列の値を呼ぶにはどの方法が一番速いのかを調べたいのです。 間違いがあったり、もっと効果的な方法がありましたら是非ご教授くださいませ。よろしくお願いします。

みんなの回答

  • is907
  • ベストアンサー率55% (5/9)
回答No.1

私も PHP でベンチマーク取るならそうします。 いちおう PEAR にもベンチマーク用のクラスがあります。 「PEAR::Benchmark」で検索してみてください。 また、 print $arr[$i]."<br />"; $i++; は、 print $arr[$i++]."<br />"; で、いけた気がします。 恐らく、C 言語が一番速いでしょうね。

参考URL:
http://pear.php.net/package/Benchmark/

関連するQ&A

専門家に質問してみよう