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