2017-12-5 0phpcom
A代码 <?php $y = 1800; $x = array(); for($j=0;$j<2000;$j++){ $x[] = "{$j}"; } for ($i=0;$i<3000;$i++){ if(in_array($y,$x)){ echo "true"; } }
B代码 <?php $y = 1800; $x = array(); for($j=0;$j<2000;$j++){ $x[] = "{$j}"; } for ($i=0;$i<3000;$i++){ if(in_array($y,$x,true)){ echo "true"; } }
A代码占用服务器时间:
B代码占用服务器时间:
从代码上可以看出2者间的时间相差6倍,在代码优化中这是很大一部
问题:
为何2者间相差如此之大,究其原因在于in_array的底层代码中会判断输入的比较值会做一个类型转换,主要性能消耗在类型转换上,所以加上第三个
参数 为强类型转换就可以舍去类型转换操作这样大大加大了服务器性能 get!!
经验:
有空研究下 ltrace 和 dtrace,ptrace 这些都是调试神器
在项目中也实实在在的用到了,前段时间还苦于无法优化in_array而苦恼