PHP 性能优化一

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 可以带给您好像好用的功能)

原文地址:https://www.cnblogs.com/xs-yqz/p/7451968.html