rand VS foreach
phpのプログラムを少しでも早くしようともがいているここ最近。
forループで毎回randをかけるのと、
一度randをだーっとやっちゃってからその値をforeachで取り出すのと
どっちが早いのかやってみました。
<?php $loop = 100000; $min = 0; $max = 100; echo "case 1 : <br>"; $starttime = microtime(); echo "start={$starttime}<br>"; $arr = array(); for($i=0;$i<$loop;$i++) { $arr[] = rand($min,$max); } $fp = fopen("may27.dat","w"); foreach($arr as $num) { fwrite($fp,$num); } fclose($fp); $breaktime = microtime();; echo "break={$breaktime}<br>"; echo "<br>"; echo "case 2 : <br>"; $restarttime = microtime(); echo "restart={$restarttime}<br>"; $fp = fopen("may27.dat","w"); for($i=0;$i<$loop;$i++) { $num = rand($min,$max); fwrite($fp,$num); } fclose($fp); $endtime = microtime(); echo "end={$endtime}"; echo "<hr>"; $starttime = microtimeToDouble($starttime); $breaktime = microtimeToDouble($breaktime); $restarttime = microtimeToDouble($restarttime); $endtime = microtimeToDouble($endtime); echo "case 1 :".($breaktime-$starttime)."<br>"; echo "case 2 :".($endtime-$restarttime); function microtimeToDouble($string){ $string_tmp = split(" ",$string); $string_tmp[1] -= 1211815550; // 適宜増やそう $ret = $string_tmp[0] + $string_tmp[1]; return $ret; } ?>
どっちかといえば、case2(randをroop内で毎回やる)の方が0.02秒くらい早いような気もするけど
randで出た数字によるみたいです。
なので、どっちが早いかは出ませんでした。
エセベンチでさぁせんw