0
0

More than 3 years have passed since last update.

配列処理スピード比較

Last updated at Posted at 2021-09-15

配列のループ処理の速さは??

配列の要素に対して処理を行いたいことはよくある話だが何が一番早いのか検証してみた。

ちなみに配列


$array = array();
for($i = 1; $i < 100000; $i++){
    $array[] = $i;
}

処理させる内容

function hundredNumber($n){
    return $n * 100;
}

処理速度を測る関数はこちらを参考にさせていただきました。

PHPの処理速度の計測方法

foreach

定番の配列処理

$start = hrtime(true);

$result_array = array();
foreach($array as $num){

    $result_array[] = hundredNumber($num);
}

$end = hrtime(true);

echo 'time : '.number_format($end - $start)."<br>"; 
//time : 19,387,398

for

ループ処理といえばこれ

$start = hrtime(true);

$result_array = array();
for($i = 1; $i < 100000; $i++){

    $result_array[] = hundredNumber($i);
}

$end = hrtime(true);

echo 'time : '.number_format($end - $start); 
//time : 17,017,476

while

またまた定番、よく無限ループして焦ってる

$start = hrtime(true);

$result_array = array();
$i = 1;
while($i < 100000){

    $result_array[] = hundredNumber($i);
    $i++;
}

$end = hrtime(true);
echo 'time : '.number_format($end - $start); 
//time : 17,280,002

array_map

あんまり使ったことない

$start = hrtime(true);

$result_array = array_map('hundredNumber', $array);

$end = hrtime(true);

echo 'time : '.number_format($end - $start); 
//time : 15,786,888

結果発表

一番定番のforeachが遅い結果となってしまいました。
そして私の中ではダークホース的存在だったarray_mapが優勝!!

コードもスッキリするし、これからは積極的に使っていこうと思いました。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0