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
PHP提高in_array查找元素的方法的更多相关文章
- DOM查找元素的方法总结
按HTML查找:优点:范围可大可小,可设置条件:包括五种方式:1.按id查找:2.按标签名查找:var elems = parent.getElementsByTagName('');3.按name属 ...
- Google 开发console查找元素或方法
F12 后 在console中输入: $("#R")[0] 查找ID 为R的元素, 如需打印出元素属性值,则输入: console.dir($("#R")[0] ...
- iframe中 父页面和子页面查找元素的方法
从父页面中查找iframe子页面中对象的方法:JS: document.getElementById('iframe').contentWindow //查找iframe加载的页面的window对象 ...
- JavaScript查找元素的方法
1.根据id获取元素 document.getElementById("id属性的值"); 2.根据标签名字获取元素 document.getElementsByTagName(& ...
- Javascript 查找元素
DOM定义了多种查找元素的方法,除了我们常用的getElementById(),还有getElementsByTagName()和getElementsByName().使用这几种方法方法我们可以查找 ...
- 使用webdriverwait封装查找元素方法
对于selenium原生的查找元素方法进行封装,在timeout规定时间内循环查找页面上有没有某个元素 这样封装的好处: 1.可以有效提高查找元素的效率,避免元素还没加载完就抛异常 2.相对于time ...
- DOM 之 document 查找元素方法
DOM 之 document 查找元素方法 getElementById("idName"); // 始终取得第一个 idName 的元素 getElementsByTagName ...
- 类 java.util.Collections 提供了对Set、List、Map进行排序、填充、查找元素的辅助方法。
类 java.util.Collections 提供了对Set.List.Map进行排序.填充.查找元素的辅助方法. 1. void sort(List) //对List容器内的元素排序,排序的规 ...
- jq 方法函数(淡入淡出,查找元素,过滤)遍历
淡入淡出:fadeIn fadeOut fadeToggle fadeTo 淡入:fadeIn(speed[,callback]) 速度和回调函数 回调函数可以写匿名函数,或者方法名不加括号. s ...
随机推荐
- OpenStack Restful API框架介绍
1 pecan框架介绍 1.1 什么是pecan pecan是一个轻量级的python web框架,最主要的特点是提供了简单的配置即可创建一个wsgi对象并提供了基于对象的路由方式. 主要提供的功 ...
- Python逆向(四)—— Python内置模块dis.py源码详解
一.前言 上一节我们对Python编译及反汇编做了讲解,大家知道dis模块可以将编译好的pyc文件中提取出来的PyCodeObject反汇编为可以阅读字节码形式.本节我们对dis模块中的源码进行详细的 ...
- sudo 命令
su命令和su -命令最大的本质区别就是: 前者只是切换了root身份,但Shell环境仍然是普通用户的Shell: 而后者连用户和Shell环境一起切换成root身份了.只有切换了Shell环境才不 ...
- [luogu 4719][模板]动态dp
传送门 Solution \(f_{i,0}\) 表示以i节点为根的子树内,不选i号节点的最大独立集 \(f_{i,1}\)表示以i节点为根的子树内,选i号节点的最大独立集 \(g_{i,0}\) 表 ...
- Java 基础:Map的一家
0.Java中的集合框架 1.Map--接口 public interface Map<K,V> 包:java.util.Map Map提供了一种映射关系,其中的元素是以键值对(key-v ...
- fluent meshing导入二维网格
meshing导入二维网格"> fluent meshing只能在Dimension为3D时才能使用 meshing导入二维网格"> 其实也可以导入二维网格,具体操作见 ...
- Ubuntu16.04 配置vnc4server
- java 跳出多重循环
public class Main { public static void main(String[] args) { System.out.println("start"); ...
- python matplotlib生成图形
y=2x+3 import matplotlib.pyplot as plt#约定俗成的写法plt #首先定义两个函数(正弦&余弦) import numpy as np #plt.figur ...
- Are query string keys case sensitive?
Are query string keys case sensitive? @gbjbaanb's answer is incorrect: The RFCs only specify the all ...