PHP程序员学习笔记|如何学习PHP

个人总结的PHP学习方法


php in_array 性能优化

2017-12-5 0phpcom


个人笔记长话短说
2端代码
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代码占用服务器时间:
强类型比较.png
B代码占用服务器时间:
强类型比较_优化.png

从代码上可以看出2者间的时间相差6倍,在代码优化中这是很大一部
问题:
为何2者间相差如此之大,究其原因在于in_array的底层代码中会判断输入的比较值会做一个类型转换,主要性能消耗在类型转换上,所以加上第三个
参数 为强类型转换就可以舍去类型转换操作这样大大加大了服务器性能 get!!

经验:
有空研究下 ltrace 和  dtrace,ptrace 这些都是调试神器
在项目中也实实在在的用到了,前段时间还苦于无法优化in_array而苦恼

« 高阶贝塞尔曲线的匀速路线生成解决方案-BSPLINE B样条 | php一句话实现 取出二维数组中的某一个值作为键»
发表评论:









订阅Rss