PHP提高in_array查找元素的方法
<pre>
<?php
$arr = array();

// 创建10万个元素的数组
for($i=0; $i<100000; $i++){
$arr[] = $i;
}

// 记录开始时间
$starttime = getMicrotime();

// 随机创建10000个数字使用in_array比较
for($j=0; $j<10000; $j++){
$str = mt_rand(1,99999);
in_array($str, $arr);
}

// 记录结束时间
$endtime = getMicrotime();

echo 'run time:'.(float)(($endtime-$starttime)*1000).'ms<br>';

/**
* 获取microtime
* @return float
*/
function getMicrotime(){
list($usec, $sec) = explode(' ', microtime());
return (float)$usec + (float)$sec;
}
?>
</pre>
run time:7003.6449432373ms

我们可以先使用array_flip进行键值互换,然后使用isset方法来判断元素是否存在,这样可以提高效率。
<pre>
<?php
$arr = array();

// 创建10万个元素的数组
for($i=0; $i<100000; $i++){
$arr[] = $i;
}

// 键值互换
$arr = array_flip($arr);

// 记录开始时间
$starttime = getMicrotime();

// 随机创建1000个数字使用isset比较
for($j=0; $j<1000; $j++){
$str = mt_rand(1,99999);
isset($arr[$str]);
}

// 记录结束时间
$endtime = getMicrotime();

echo 'run time:'.(float)(($endtime-$starttime)*1000).'ms<br>';

/**
* 获取microtime
* @return float
*/
function getMicrotime(){
list($usec, $sec) = explode(' ', microtime());
return (float)$usec + (float)$sec;
}
?>
</pre>
run time:2.2781620025635ms

最新文章

  1. 自己动手,让Entity Framework Power Tools在VS2015重放光彩
  2. android手机两种方式获取IP地址
  3. bzoj1834: [ZJOI2010]network 网络扩容
  4. Eclipse launch failed.Binary not found解决方案
  5. SRM 616 ColorfulCoins
  6. 使用PHP抓取网站ico图标
  7. FTP上传文件时 System.Net.WebException: 基础连接已经关闭: 接收时发生错误。
  8. 软体project(两)——软体project
  9. mac下安装eclipse以及python
  10. 浙大 pat 1007题解
  11. ASP.NET—013:实现带控件的弹出层(弹出框)
  12. 转:Jmeter常见问题 (转载) http://www.51testing.com/?uid-128005-action-viewspace-itemid-84094
  13. tar split cat 创建、合并分卷压缩包
  14. Delphi 带星期几的日期格式化
  15. (C/C++学习笔记) 二十二. 标准模板库
  16. jQuery 重复加载,导致依赖于 jQuery的JS全部失效问题
  17. 理解go语言 协程之间的通讯
  18. 通过Class类获取对象实例
  19. 8 ways to improve ASP.NET Web API performance
  20. js打印去掉页眉页脚

热门文章

  1. shell命令的原理
  2. Halting Problem
  3. RS译码的描述
  4. VMware安装VMwaretools
  5. CLion201914 下载安装
  6. element ui table组件自定义合计栏,后台给的数据
  7. 查看 systemctl 崩溃日志 及 运行日志
  8. TLS整理(下):TLS如何保证安全
  9. 使用HttpClient访问WebHook
  10. 性能分析 函数粒度 函数里的一条语句 汇编 反编译 机器指令 %rbx,%rbp