php中foreach与for的对比测试以及语句块带来的性能消耗测试...
时间:2010-08-09 来源:lgg201
经过论坛里各位测试, 发现我的测试结论:"在for, foreach, if, while(未测试, 推断)等等可以用{}带有语句块的地方, 如果业务逻辑上允许被改造为单条语句, 则尽量不要使用{}." 是错误的.
这个结论只有在eclipse中使用run as php script时才会发生, 以下测试数据关于花括号的问题也只有在ecipse中才有.
关于foreach与for的比较, 与论坛里其他朋友测试结果一致.
囧.
$times = 1000000; $i = 1; $datas = array(); while($i <= $times) array_push($datas, $i++); $start = microtime(true); foreach($datas as $index => $data) $data + 1; echo 'foreach使用单条语句耗时'.(microtime(true) - $start).'秒/'.$times.'次.<br />'; $start = microtime(true); foreach($datas as $index => $data) { $data + 1; } echo 'foreach使用花括号语句块耗时'.(microtime(true) - $start).'秒/'.$times.'次.<br />'; $start = microtime(true); for($i = 0; $i < $times; $i ++) $datas[$i] + 1; echo 'for使用单条语句耗时'.(microtime(true) - $start).'秒/'.$times.'次.<br />'; $start = microtime(true); for($i = 0; $i < $times; $i ++) { $datas[$i] + 1; } echo 'for使用花括号语句块耗时'.(microtime(true) - $start).'秒/'.$times.'次.<br />'; //测试输出结果: //foreach使用单条语句耗时0.127368927002秒/1000000次. //foreach使用花括号语句块耗时6.78815078735秒/1000000次. //for使用单条语句耗时6.77403593063秒/1000000次. //for使用花括号语句块耗时13.2349820137秒/1000000次. //以上四条测试结论: //1. 优先使用foreach //2. 尽可能把语句块优化成为单条语句 $start = microtime(true); foreach($datas as $index => $data) if(true) $data + 1; echo 'if使用单条语句耗时'.(microtime(true) - $start).'秒/'.$times.'次.<br />'; $start = microtime(true); foreach($datas as $index => $data) if(true) { $data + 1; } echo 'if使用花括号语句块耗时'.(microtime(true) - $start).'秒/'.$times.'次.<br />'; //测试结果输出: //if使用单条语句耗时0.159381151199秒/1000000次. //if使用花括号语句块耗时6.87667107582秒/1000000次. //结论: 尽量少使用语句块