PGメモ

非エンジニアの記録

PHP高速化 ループの種類

ループがめちゃめちゃ増えて遅い。

回数は減らせないけど早くしたい、forよりwhileらしい。やってみた。


$c = 20000;
for($i=0;$i<10;$i++){
$r = bm('loop_1',$c);
$rary += $r;
$ravg = $rary/$i;
}
echo $ravg;

function bm($fn, $c)
{ $time_start = microtime(true);
$fn($c);
$time_end = microtime(true);
$time = $time_end - $time_start;
return sprintf("%.10f",$time);
}

function loop_1($c){
for($i=0;$i<$c;$i++){
filerw($i);
}
}

function loop_2($c){
$i=0;
while($i<$c){
filerw($i);
$i++;
}
}

function filerw($i){
$fp = fopen("./test.txt", "w");
fwrite($fp, $i . "\n");
fclose($fp);
}

さて結果は・・

for


2.7577489482111

while


2.6113062964556


結果:早くなる。可読性が悪くなるわけでもないのでやる価値はあるかもしれません。