PHP性能优化?对于这个问题,我们首先要知道影响PHP的性能的原因是什么?
1.什么情况下会出现PHP性能问题?
1)PHP语法使用 不当(包括某些业务可以使用PHP本身自带的函数来处理)
2)使用PHP语言做了它不擅长的事情
3)用PHP连接数据库或者服务武器不当
4)PHP自身的短板
2.PHP性能问题简介之PHP的性能问题的解决方向
从困难由浅入深可分为
1:PHP语言级的性能优化
2:PHP周边问题的优化(比如说MYSQL Nginx/Apache)
3:PHP语言资深分析,优化(PS主要指的是底层的C代码)
PHP的执行过程参看http://blog.csdn.net/risingsun001/article/details/22888861
下面针对php语言级的性能优化做实例讨论,对标题里面说的内容进行一个测试,接下来要书写两个文件 bad.php, goods.php
我们要测试的是合并两个数组的操作
bad.php
思路:
先将数组1逐个加入到目标数组中;
之后,遍历数组2,对比数组2的元素是否在数组1中出现,如果没有则插入到目标数组,否则忽略
1 <span style="font-size:14px;"><?php 2 //准备两个内容随机的数组 3 $arr1 = $arr2 = $arr_merged = array(); 4 //接下来随机给两个数组赋值 5 for ( $i=0; $i<rand(1000,2000); $i++) { 6 $arr1[] = rand(); 7 } 8 9 for ( $i=0; $i<rand(1000,2000); $i++) { 10 $arr2[] = rand(); 11 } 12 13 //开始循环比较 14 foreach ( $arr1 as $v ) { 15 $arr_merged[] = $v; 16 } 17 18 foreach ( $arr2 as $v ) { 19 if(!in_array($v, $arr_merged)){ 20 $arr_merged[] = $v; 21 } 22 } 23 24 var_dump($arr_merged);</span>
goods.php
思路:
随机生成两个数组,在打乱顺序
之后,使用array_merge 合并
1 <span style="font-size:14px;"><?php 2 //准备两个内容随机的数组 3 $arr1 = $arr2 = range(1000, 2000); 4 $arr_merged = array(); 5 //接下来随机给两个数组赋值 6 shuffle($arr1); 7 shuffle($arr2); 8 9 $arr_merged = array_merge($arr1, $arr2); 10 11 var_dump($arr_merged); 12 </span>
该程序的性能测试比较如下:http://blog.csdn.net/wjc19911118/article/details/41735659
3. 总结
优化点:少写代码,多用PHP自身提供的能力
性能问题:自己写的代码冗余较多,可读性不好,并且性能低
为什么性能低?php代码需要编译解析为底层语言, 这一过程每次请求都会 处理一遍,开销大。
好方法:多使用php内置变量,常量, 函数(spl 可以带给您好像好用的功能)