深入探讨array_map、foreach、for循环处理数组的效率
来源:互联网 发布:xp系统cpu优化工具 编辑:程序博客网 时间:2024/06/08 02:39
<?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 ($array as $key => &$value) {
$value += 1;
}
$timer->stop(); //在脚本文件结束处调用这个方法
echo "运用foreach处理数组时用了<b>".$timer->spent()."</b>微秒<br>";
//方法三:
for($i = 0;$i < count($array);$i++){
$array[$i] += 1;
}
// echo "<pre>";
// print_r($array);
// echo "</pre>";
$timer->stop(); //在脚本文件结束处调用这个方法
echo "运用for处理数组时用了<b>".$timer->spent()."</b>微秒<br>";
?>
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 ($array as $key => &$value) {
$value += 1;
}
$timer->stop(); //在脚本文件结束处调用这个方法
echo "运用foreach处理数组时用了<b>".$timer->spent()."</b>微秒<br>";
//方法三:
for($i = 0;$i < count($array);$i++){
$array[$i] += 1;
}
// echo "<pre>";
// print_r($array);
// echo "</pre>";
$timer->stop(); //在脚本文件结束处调用这个方法
echo "运用for处理数组时用了<b>".$timer->spent()."</b>微秒<br>";
结果:
从中发现,array_map的速度最快,很多PHP框架中都使用它来循环处理函数,但是这并不能说array_map的效率是最高的,这跟PHP的版本、循环部分的业务逻辑有关,相对来说array_map的时间比较稳定,如果只是遍历展示数组,foreach应该是最快的,还有foreach只是个函数结果,不是个函数。
个人理解观点,希望大家批评指正!
?>
阅读全文
0 0
- 深入探讨array_map、foreach、for循环处理数组的效率
- for和foreach循环的效率对比
- 深入 foreach 和 for 循环的区别
- php array_map array_walk for foreach效率比较 phpstudy apache php5.5 windows7旗舰版
- 数组、List、ArrayList的使用以及for、foreach效率比较
- 巧用array_map()和array_reduce()替代foreach循环
- 巧用array_map()和array_reduce()替代foreach循环
- php array_map,for,foreach性能测试
- Java的for循环新用法 -- foreach与数组
- php二维数组的输出 for循环结合foreach
- java的增强性for循环(foreach)访问数组
- for循环/forEach,不要删除数组元素
- 从数据结构角度分析foreach效率比for循环高的原因
- 从数据结构角度分析foreach效率比for循环高的原因
- 从数据结构角度分析foreach效率比for循环高的原因
- PHP array_map() 处理数组的单元数据问题
- C#循环效率比较 Item6 - Prefer 'for' over 'foreach'. [Performance]
- java-基础-foreach与正常for循环效率对比
- Mysql数据库表查询中 inner join,left join,right join 详解
- 网络状态码(HTTP状态码 )
- 中文乱码小结
- 使用node.js搭建简易的个人博客(一)
- 第八讲 拦截器
- 深入探讨array_map、foreach、for循环处理数组的效率
- 小小白爬虫入门——selenium模拟登录qq空间
- 原生js封装jquery
- c++学习笔记,面向对象设计模式,装饰者模式
- HeadFirstJava 11异常处理
- 蓝桥杯 摆动序列
- [LeetCode 解题报告]008.String to Integer (atoi)
- Error:Cannot find module 'stylus'
- codevs 1214 线段覆盖(贪心 or dp)