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中出现,如果没有则插入到目标数组,否则忽略

 <span style="font-size:14px;"><?php
//准备两个内容随机的数组
$arr1 = $arr2 = $arr_merged = array();
//接下来随机给两个数组赋值
for ( $i=; $i<rand(,); $i++) {
$arr1[] = rand();
} for ( $i=; $i<rand(,); $i++) {
$arr2[] = rand();
} //开始循环比较
foreach ( $arr1 as $v ) {
$arr_merged[] = $v;
} foreach ( $arr2 as $v ) {
if(!in_array($v, $arr_merged)){
$arr_merged[] = $v;
}
} var_dump($arr_merged);</span>

goods.php

思路:

随机生成两个数组,在打乱顺序

之后,使用array_merge 合并

 <span style="font-size:14px;"><?php
//准备两个内容随机的数组
$arr1 = $arr2 = range(, );
$arr_merged = array();
//接下来随机给两个数组赋值
shuffle($arr1);
shuffle($arr2); $arr_merged = array_merge($arr1, $arr2); var_dump($arr_merged);
</span>

该程序的性能测试比较如下:http://blog.csdn.net/wjc19911118/article/details/41735659

3. 总结

优化点:少写代码,多用PHP自身提供的能力

性能问题:自己写的代码冗余较多,可读性不好,并且性能低

为什么性能低?php代码需要编译解析为底层语言, 这一过程每次请求都会 处理一遍,开销大。

好方法:多使用php内置变量,常量, 函数(spl 可以带给您好像好用的功能)

最新文章

  1. 冗余代码都走开——前端模块打包利器 Rollup.js 入门
  2. 理解AX InventTrans的几种状态
  3. wap端开发必须基础
  4. ASP.NET、C#调用外部可执行exe文件--多种方案
  5. O_NONBLOCK on regular file
  6. 深入理解DIP、IoC、DI以及IoC容器(转)
  7. html5shiv.js-让IE浏览器支持HTML5标准
  8. PHP抓取豆瓣读书爬虫代码
  9. linux日志审计项目案例实战(生产环境日志审计项目解决方案)
  10. Oracle EBS-SQL (WIP-6):检查任务已完成但状态是发放的任务.sql
  11. c# mouseenter mousemove区别?
  12. hdu 5954 -- Do not pour out(积分+二分)
  13. 快速增加controller节点
  14. Java I/O---添加属性和有用的接口—FilterlnputStream&amp;FilterOutputStream
  15. SpringMVC格式转化错误之HTTP Status [400] – [Bad Request]
  16. Lua学习链接
  17. springboot2.0 springcloud 断路器仪表盘支持
  18. 【分享】Vue 资源典藏(UI组件、开发框架、服务端、辅助工具、应用实例、Demo示例)
  19. Qt__CMakeLists.txt
  20. linux清空历史记录

热门文章

  1. faster-rcnn训练自己的数据集参考文章
  2. 最长的相同节点值路径 &#183; Longest Univalue Path
  3. qmake not exec in ubuntu
  4. Mysql中自定义函数编程
  5. vscode安装dlv插件报错:There is no tracking information for the current branch.
  6. spring.net 继承
  7. TF Boys (TensorFlow Boys ) 养成记(四):TensorFlow 简易 CIFAR10 分类网络
  8. input框添加阴影效果
  9. IIS请求筛选模块被配置为拒绝包含双重转义序列的请求404.11
  10. java 泛型详解(转)