php array_map,for,foreach性能测试

2024-06-09 10:18
文章标签 性能 php 测试 map foreach array

本文主要是介绍php array_map,for,foreach性能测试,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

array array_map ( callback $callback , array $arr1 [, array $... ] )

是php自带的使用回调函数的数组批处理函数,看到这类函数的结构我就怀疑其处理效率。做了个小测试

$a[0]['id'] = 1;
$a[0]['name'] = "a";
$a[1]['id'] = 2;
$a[1]['name'] = "b";
$a[2]['id'] = 3;
$a[2]['name'] = "c";
$a[3]['id'] = 3;
$a[3]['name'] = "c";
$a[4]['id'] = 3;
$a[4]['name'] = "c";
$a[5]['id'] = 3;
$a[5]['name'] = "c";
$a[6]['id'] = 3;
$a[6]['name'] = "c";
$a[7]['id'] = 3;
$a[7]['name'] = "c";
$a[8]['id'] = 3;
$a[8]['name'] = "c";
$a[9]['id'] = 3;
$a[9]['name'] = "c";
$a[10]['id'] = 3;
$a[10]['name'] = "c";
function _map($x){$x['cid'] = "abc";return $x;
}$t1 = microtime(true);//方案1:自己创建回调函数,在mvc框架中,这类回调函数的调用很不方便,单独一个函数放在什么地方是个问题,所以首先想到用类似js的闭包。实际效率最低;平均58us
//$a = array_map(create_function('$x','$x["cid"] = "abc";return $x;'),$a);    //方案2:使用回调函数;平均30us
//$a = array_map('_map',$a);//方案3:直接foreach遍历;平均20us
//foreach($a as $k=>$v) {
//    $a[$k]['cid'] = "abc";
//}//方案4:使用for循环;平均15us
for($i=0;$i<count($a);$i++){	$a[$i]['cid'] = "abc";
}$t2 = microtime(true);echo pow(10,4)*$t2 - pow(10,4)*$t1;
echo "<br>";
echo ($t2-$t1)*pow(10,6);
print_r("<pre>");
print_r ($a);
print_r("</pre>");

测试结果
方案测试方法微秒数
1array_map+create_function58
2array_map30
3foreach20
4for15

这篇关于php array_map,for,foreach性能测试的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1044898

相关文章

Python如何使用__slots__实现节省内存和性能优化

《Python如何使用__slots__实现节省内存和性能优化》你有想过,一个小小的__slots__能让你的Python类内存消耗直接减半吗,没错,今天咱们要聊的就是这个让人眼前一亮的技巧,感兴趣的... 目录背景:内存吃得满满的类__slots__:你的内存管理小助手举个大概的例子:看看效果如何?1.

SpringBoot如何通过Map实现策略模式

《SpringBoot如何通过Map实现策略模式》策略模式是一种行为设计模式,它允许在运行时选择算法的行为,在Spring框架中,我们可以利用@Resource注解和Map集合来优雅地实现策略模式,这... 目录前言底层机制解析Spring的集合类型自动装配@Resource注解的行为实现原理使用直接使用M

JavaScript Array.from及其相关用法详解(示例演示)

《JavaScriptArray.from及其相关用法详解(示例演示)》Array.from方法是ES6引入的一个静态方法,用于从类数组对象或可迭代对象创建一个新的数组实例,本文将详细介绍Array... 目录一、Array.from 方法概述1. 方法介绍2. 示例演示二、结合实际场景的使用1. 初始化二

Redis中高并发读写性能的深度解析与优化

《Redis中高并发读写性能的深度解析与优化》Redis作为一款高性能的内存数据库,广泛应用于缓存、消息队列、实时统计等场景,本文将深入探讨Redis的读写并发能力,感兴趣的小伙伴可以了解下... 目录引言一、Redis 并发能力概述1.1 Redis 的读写性能1.2 影响 Redis 并发能力的因素二、

C++ 各种map特点对比分析

《C++各种map特点对比分析》文章比较了C++中不同类型的map(如std::map,std::unordered_map,std::multimap,std::unordered_multima... 目录特点比较C++ 示例代码 ​​​​​​代码解释特点比较1. std::map底层实现:基于红黑

kotlin的函数forEach示例详解

《kotlin的函数forEach示例详解》在Kotlin中,forEach是一个高阶函数,用于遍历集合中的每个元素并对其执行指定的操作,它的核心特点是简洁、函数式,适用于需要遍历集合且无需返回值的场... 目录一、基本用法1️⃣ 遍历集合2️⃣ 遍历数组3️⃣ 遍历 Map二、与 for 循环的区别三、高

Golang中拼接字符串的6种方式性能对比

《Golang中拼接字符串的6种方式性能对比》golang的string类型是不可修改的,对于拼接字符串来说,本质上还是创建一个新的对象将数据放进去,主要有6种拼接方式,下面小编就来为大家详细讲讲吧... 目录拼接方式介绍性能对比测试代码测试结果源码分析golang的string类型是不可修改的,对于拼接字

JavaScript中的Map用法完全指南

《JavaScript中的Map用法完全指南》:本文主要介绍JavaScript中Map用法的相关资料,通过实例讲解了Map的创建、常用方法和迭代方式,还探讨了Map与对象的区别,并通过一个例子展... 目录引言1. 创建 Map2. Map 和对象的对比3. Map 的常用方法3.1 set(key, v

Golang中map缩容的实现

《Golang中map缩容的实现》本文主要介绍了Go语言中map的扩缩容机制,包括grow和hashGrow方法的处理,具有一定的参考价值,感兴趣的可以了解一下... 目录基本分析带来的隐患为什么不支持缩容基本分析在 Go 底层源码 src/runtime/map.go 中,扩缩容的处理方法是 grow

mysql线上查询之前要性能调优的技巧及示例

《mysql线上查询之前要性能调优的技巧及示例》文章介绍了查询优化的几种方法,包括使用索引、避免不必要的列和行、有效的JOIN策略、子查询和派生表的优化、查询提示和优化器提示等,这些方法可以帮助提高数... 目录避免不必要的列和行使用有效的JOIN策略使用子查询和派生表时要小心使用查询提示和优化器提示其他常