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进行GRPC和Dubbo协议的高级测试

《使用Python进行GRPC和Dubbo协议的高级测试》GRPC(GoogleRemoteProcedureCall)是一种高性能、开源的远程过程调用(RPC)框架,Dubbo是一种高性能的分布式服... 目录01 GRPC测试安装gRPC编写.proto文件实现服务02 Dubbo测试1. 安装Dubb

Python的端到端测试框架SeleniumBase使用解读

《Python的端到端测试框架SeleniumBase使用解读》:本文主要介绍Python的端到端测试框架SeleniumBase使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全... 目录SeleniumBase详细介绍及用法指南什么是 SeleniumBase?SeleniumBase

Java中Map.Entry()含义及方法使用代码

《Java中Map.Entry()含义及方法使用代码》:本文主要介绍Java中Map.Entry()含义及方法使用的相关资料,Map.Entry是Java中Map的静态内部接口,用于表示键值对,其... 目录前言 Map.Entry作用核心方法常见使用场景1. 遍历 Map 的所有键值对2. 直接修改 Ma

Java中JSON格式反序列化为Map且保证存取顺序一致的问题

《Java中JSON格式反序列化为Map且保证存取顺序一致的问题》:本文主要介绍Java中JSON格式反序列化为Map且保证存取顺序一致的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未... 目录背景问题解决方法总结背景做项目涉及两个微服务之间传数据时,需要提供方将Map类型的数据序列化为co

JVisualVM之Java性能监控与调优利器详解

《JVisualVM之Java性能监控与调优利器详解》本文将详细介绍JVisualVM的使用方法,并结合实际案例展示如何利用它进行性能调优,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全... 目录1. JVisualVM简介2. JVisualVM的安装与启动2.1 启动JVisualVM2

Java使用MethodHandle来替代反射,提高性能问题

《Java使用MethodHandle来替代反射,提高性能问题》:本文主要介绍Java使用MethodHandle来替代反射,提高性能问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑... 目录一、认识MethodHandle1、简介2、使用方式3、与反射的区别二、示例1、基本使用2、(重要)

python多线程并发测试过程

《python多线程并发测试过程》:本文主要介绍python多线程并发测试过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、并发与并行?二、同步与异步的概念?三、线程与进程的区别?需求1:多线程执行不同任务需求2:多线程执行相同任务总结一、并发与并行?1、

PyTorch高级特性与性能优化方式

《PyTorch高级特性与性能优化方式》:本文主要介绍PyTorch高级特性与性能优化方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、自动化机制1.自动微分机制2.动态计算图二、性能优化1.内存管理2.GPU加速3.多GPU训练三、分布式训练1.分布式数据

Java的"伪泛型"变"真泛型"后对性能的影响

《Java的伪泛型变真泛型后对性能的影响》泛型擦除本质上就是擦除与泛型相关的一切信息,例如参数化类型、类型变量等,Javac还将在需要时进行类型检查及强制类型转换,甚至在必要时会合成桥方法,这篇文章主... 目录1、真假泛型2、性能影响泛型存在于Java源代码中,在编译为字节码文件之前都会进行泛型擦除(ty

Java使用Stream流的Lambda语法进行List转Map的操作方式

《Java使用Stream流的Lambda语法进行List转Map的操作方式》:本文主要介绍Java使用Stream流的Lambda语法进行List转Map的操作方式,具有很好的参考价值,希望对大... 目录背景Stream流的Lambda语法应用实例1、定义要操作的UserDto2、ListChina编程转成M