速度比較IT

for文とforeach文どっちがいいの?処理速度を比較してみる

最近は処理速度を測るのが少しブームです笑 今回は、forとforeachの処理速度を計測し、比較をします。 ネットで処理速度の比較を検索してみると、どうやらforeachのが優秀とのことです。 しかし、以前先輩にコードレビューしてもらったときには、 「 foreachで処理書いてるけど、forの方が処理早いから、キーを使用しない部分については、for文を使用して。」 と言われたこともあり、少し混乱しているので、自身で計測し、確かめてみたいと思います。

検証方法

言語はPHPを使用し、以下の記事を参考にし、処理速度を計測します。 https://qiita.com/ao_love/items/a2d8b8566d0426195002 処理を記述します。 for文の処理速度を取得

//配列の作成
$array = array();
for($i=1;$i<=100000;$i++){
    $array[] = $i;
}
$time_start = microtime(true);

// 計測開始
for($i=1;$i<count($array);$i++){
    echo $i;
    echo '<br>';
}
//計測終了

$time = microtime(true) - $time_start;
echo "{$time} 秒";

foreachの処理速度を取得

//配列の作成
$array = array();
for($i=1;$i<=100000;$i++){
    $array[] = $i;
}
$time_start = microtime(true);

// 計測開始
foreach($array as $value){
    echo $value;
    echo '<br>';
}
//計測終了

$time = microtime(true) - $time_start;
echo "{$time} 秒";

処理の流れは両方とも同じです。 まず、数字が1から順に10万までを値とした配列を生成します。(計測時間には含みません) その後、forまたはforeachで配列の値を順番に取得し、echoで出力します。 全ての処理が終了したら、かかった時間を出力します。 また、1回の測定結果のみだと正しい結果が得られない可能性があるため、5回測定を行い、平均時間、合計時間を出します。

測定結果

for文の処理速度を取得 1回目: 0.076268196105957 秒 2回目: 0.088988065719604 秒 3回目: 0.08555006980896 秒 4回目: 0.082581996917725 秒 5回目: 0.085355043411255 秒 平均: 0.418743371963501秒 合計: 0.0837486743927002秒 foreachの処理速度を取得 0.068567037582397 秒 0.061532020568848 秒 0.063639879226685 秒 0.061524152755737 秒 0.064805030822754 秒 平均 0.320068120956421秒 合計 0.0640136241912842秒 平均 0.019735050201416秒の差 = 約0.02秒の差 合計 0.09867525100708秒の差   = 約0.1秒の差 がでました。 やはりネットで書いてある通り、foreachのが優秀なようです。 ということは、あの先輩、嘘つきやがったのな…

結論

ループ処理は、可読性にも優れており、処理速度も速いforeachを使用するべき!