深入探讨array_map、foreach、for循环处理数组的效率
array_map的使用
<?php
header("content-type:text/html;charset=utf-8");
//生命一个计算脚本运行时间的类
class Timer{
private $startTime = 0; //保存脚本开始执行时的时间(以微秒的形式保存)
private $stopTime = 0; //保存脚本结束执行时的时间(以微秒的形式保存)
//在脚本开始处调用获取脚本开始时间的微秒值
function start(){
$this->startTime = microtime(true); //将获取的时间赋值给成员属性$startTime
}
//脚本结束处嗲用脚本结束的时间微秒值
function stop(){
$this->stopTime = microtime(true); //将获取的时间赋给成员属性$stopTime
}
//返回同一脚本中两次获取时间的差值
function spent(){
return $this->stopTime - $this->startTime;
}
}
$timer= new Timer();
$array = range(1, 100000);
$timer->start(); //在脚本文件开始执行时调用这个方法
//每个数组的元素都加1
//方法一:array_map
$result = array_map(function($val){
return $val+1;
}, $array);
$timer->stop(); //在脚本文件结束处调用这个方法
echo "运用array_map处理数组时用了<b>".$timer->spent()."</b>秒<br>";foreach的使用
foreach ($array as $key => &$value) {
$value += 1;
}
$timer->stop(); //在脚本文件结束处调用这个方法
echo "运用foreach处理数组时用了<b>".$timer->spent()."</b>秒<br>";for的使用
for($i = 0;$i < count($array);$i++){
$array[$i] += 1;
}
// echo "<pre>";
// print_r($array);
// echo "</pre>";
$timer->stop(); //在脚本文件结束处调用这个方法
echo "运用for处理数组时用了".$timer->spent()."秒";结果:(纠正下,耗时单位:秒,不是微秒)
从中发现,array_map的速度最快,很多PHP框架中都使用它来循环处理函数,但是这并不能说array_map的效率是最高的,这跟PHP的版本、循环部分的业务逻辑有关,相对来说array_map的时间比较稳定,如果只是遍历展示数组,foreach应该是最快的,还有foreach只是个语言结构,不是函数。
个人理解观点,希望大家批评指正!
声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。
- 上一篇: 最常被遗忘的 Web 性能优化:浏览器缓存
- 下一篇: 让PHP7达到最高性能的几个建议
