测试in_array、isset、array_key_exists性能。自己写的简易测试代码:

ini_set('display_errors',true);
error_reporting(E_ALL);
date_default_timezone_set('PRC'); function ttt($a,$b)
{
$u1 = $b[0]-$a[0];
$u2 = $b[1]-$a[1]; echo number_format($u1,8).'秒 '.$u2.'字节';
echo '<br/>';
} $t0 = [
microtime(true),
memory_get_usage()
]; $arr1 = [];
$arr2 = [];
for ( $i=0; $i < 1000; $i++ )
{
$arr1[] = 'a'.$i;
$arr2['a'.$i] = true;
} $k = 'a862'; $t1 = [
microtime(true),
memory_get_usage()
]; for ( $i=0; $i < 100; $i++ )
{
in_array($k,$arr1);
} $t2 = [
microtime(true),
memory_get_usage()
]; for ( $i=0; $i < 100; $i++ )
{
isset($arr2[$k]);
} $t3 = [
microtime(true),
memory_get_usage()
]; for ( $i=0; $i < 100; $i++ )
{
array_key_exists($k,$arr2);
} $t4 = [
microtime(true),
memory_get_usage()
]; ttt($t1,$t2);
ttt($t2,$t3);
ttt($t3,$t4);

我的电脑中输出的结果:

0.01480007秒 328字节
0.00003886秒 328字节
0.00008416秒 328字节

粗率来看使用isset最好,in_array比array_key_exists消耗更多的时间。

如果在数据量比较下的情况下这三者的情况基本接近,但是仍然isset是最快的。

因而在设计NILCMS的时候要考虑这方面的问题。铭记。

PHP中测试in_array、isset、array_key_exists性能的更多相关文章

  1. PHP 中数组函数 isset 效率比 array_key_exists 更高

    PHP 中数组函数 isset 效率比 array_key_exists 更高 PHP 浏览:4194 2014年04月05日 isset 和 array_key_exists 函数都可以用来测试数组 ...

  2. MySQL中distinct和group by性能比较[转]

    MySQL中distinct和group by性能比较[转] 之前看了网上的一些测试,感觉不是很准确,今天亲自测试了一番.得出了结论(仅在个人计算机上测试,可能不全面,仅供参考) 测试过程: 准备一张 ...

  3. 测试c语言函数调用性能因素之测试三

    函数调用:即调用函数调用被调用函数,调用函数压栈,被调用函数执行,调用函数出栈,调用函数继续执行的一个看似简单的过程,系统底层却做了大量操作. 操作: 1,               调用函数帧指针 ...

  4. Mozilla正在SpiderMonkey中测试JavaScript并行计算

    Mozilla正致力于实现JavaScript“并行(parallelism)计算”,以便充分利用硬件性能.Dave Herman是Mozilla Research的首席研究员和策略总监.近日,他在一 ...

  5. Swift 中 String 取下标及性能问题

    Swift 中 String 取下标及性能问题 取下标 String String 用 String.Index 取下标(subscript)得到 Character,String.Index 要从 ...

  6. Webbench、ab命令:做压力测试的工具和性能的监控工具

    DDOS攻击:???DDOS概述:分布式拒绝服务(DDoS:Distributed Denial of Service)攻击,指借助于客户/服务器技术,将多个计算机联合起来作为攻击平台,对一个或多个目 ...

  7. 测试mktime和localtime_r性能及优化方法

    // 测试mktime和localtime_r性能及优化方法 // // 编译方法:g++ -g -o x x.cpp或g++ -O2 -o x x.cpp,两种编译方式性能基本相同. // // 结 ...

  8. loadrunner测试TCP协议服务器性能

    loadrunner测试TCP协议服务器性能 . 性能loadrunner测试c 最近对服务器的性能感兴趣,于是开始研究了一阵子loadrunner如何做采用TCP协议交互的服务器的性能测试,对loa ...

  9. python中日志logging模块的性能及多进程详解

    python中日志logging模块的性能及多进程详解 使用Python来写后台任务时,时常需要使用输出日志来记录程序运行的状态,并在发生错误时将错误的详细信息保存下来,以别调试和分析.Python的 ...

随机推荐

  1. c3p0 ComboPooledDataSource无法识别的问题

    maven项目下,基本就是导错包了的问题. 下面那个才是连接池的.

  2. Tomcat 下载与安装

    下载地址:http://tomcat.apache.org 根据自己电脑的系统下载Core节点下不同的版本.   Tomcat文件目录结构 bin:存放启动与关闭Tomcat的脚本文件 conf:存放 ...

  3. JavaScript 的HTML转义方法 html_encode 和 html_decode

    此方法用来将用户输入内容中的尖括号.引号等进行转义  

  4. vs2015新功能和其他

    1.自2011版本开始开发式编译器发布:Roslyn,其提供的API可以侦测dll编译过程中访问和分析编译数据,传统的编译器都是黑盒子:源代码从黑盒子的一端进入,目标文件/程序集从另一端出来. 2.最 ...

  5. Revit开发小技巧-连接类

    该类用来连接两个Element.备注一下防止忘记.

  6. PKCS#7

    1.名词解释 数字签名:在ISO7498-2标准中定义为:"附加在数据单元上的一些数据,或是对数据单元所作的密码变换,这种数据和变换允许数据单元的接收者用以确认数据单元来源和数据单元的完整性 ...

  7. 重磅发布 | 黑镜调查:深渊背后的真相之「DDoS 威胁与黑灰产业调查报告」

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由云鼎实验室发表于云+社区专栏 本文经授权转载自 FreeBuf 2018年世界杯硝烟散尽,但关于她的话题却远远没有结束.说起世界杯,就 ...

  8. IOS git 删除仓库 新建仓库 提交 合并 操作 码云

    HDHaoShaoPengdeiMac:~ hdhaoshaopeng$ defaults write com.apple.finder AppleShowAllFiles TRUE HDHaoSha ...

  9. bootstrape3 模态

    version 2 的模态 不能在 version 3 上面用. http://schy-hqh.iteye.com/blog/1995690

  10. xlutils模块使用

    python常用模块目录 1.xlutils 实现拷贝原文件 原表格: import xlrd from xlutils.copy import copy workbook = xlrd.open_w ...