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中出现,如果没有则插入到目标数组,否则忽略
<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 可以带给您好像好用的功能)
PHP 性能优化一的更多相关文章
- 01.SQLServer性能优化之----强大的文件组----分盘存储
汇总篇:http://www.cnblogs.com/dunitian/p/4822808.html#tsql 文章内容皆自己的理解,如有不足之处欢迎指正~谢谢 前天有学弟问逆天:“逆天,有没有一种方 ...
- 03.SQLServer性能优化之---存储优化系列
汇总篇:http://www.cnblogs.com/dunitian/p/4822808.html#tsql 概 述:http://www.cnblogs.com/dunitian/p/60413 ...
- Web性能优化:What? Why? How?
为什么要提升web性能? Web性能黄金准则:只有10%~20%的最终用户响应时间花在了下载html文档上,其余的80%~90%时间花在了下载页面组件上. web性能对于用户体验有及其重要的影响,根据 ...
- Web性能优化:图片优化
程序员都是懒孩子,想直接看自动优化的点:传送门 我自己的Blog:http://cabbit.me/web-image-optimization/ HTTP Archieve有个统计,图片内容已经占到 ...
- C#中那些[举手之劳]的性能优化
隔了很久没写东西了,主要是最近比较忙,更主要的是最近比较懒...... 其实这篇很早就想写了 工作和生活中经常可以看到一些程序猿,写代码的时候只关注代码的逻辑性,而不考虑运行效率 其实这对大多数程序猿 ...
- JavaScript性能优化
如今主流浏览器都在比拼JavaScript引擎的执行速度,但最终都会达到一个理论极限,即无限接近编译后程序执行速度. 这种情况下决定程序速度的另一个重要因素就是代码本身. 在这里我们会分门别类的介绍J ...
- 02.SQLServer性能优化之---牛逼的OSQL----大数据导入
汇总篇:http://www.cnblogs.com/dunitian/p/4822808.html#tsql 上一篇:01.SQLServer性能优化之----强大的文件组----分盘存储 http ...
- C++ 应用程序性能优化
C++ 应用程序性能优化 eryar@163.com 1. Introduction 对于几何造型内核OpenCASCADE,由于会涉及到大量的数值算法,如矩阵相关计算,微积分,Newton迭代法解方 ...
- Android性能优化之利用LeakCanary检测内存泄漏及解决办法
前言: 最近公司C轮融资成功了,移动团队准备扩大一下,需要招聘Android开发工程师,陆陆续续面试了几位Android应聘者,面试过程中聊到性能优化中如何避免内存泄漏问题时,很少有人全面的回答上来. ...
- 前端性能优化的另一种方式——HTTP2.0
最近在读一本书叫<web性能权威指南>谷歌公司高性能团队核心成员的权威之作. 一直听说HTTP2.0,对此也仅仅是耳闻,没有具体研读过,这次正好有两个篇章,分别讲HTTP1.1和HTTP2 ...
随机推荐
- TCP端口状态说明ESTABLISHED、TIME_WAIT、 CLOSE_WAIT
一. 首先说下tcp端口的几种状态: 1.LISTENING状态 FTP服务启动后首先处于侦听(LISTENING)状态. 2.ESTABLISHED状态 ESTABLISHED的意思是建立连接.表示 ...
- HTML标签及属性
HTML 标签大全及属性 来源:http://www.cnblogs.com/Mr-liyang/p/5797976.html 基本结构标签:<HTML>,表示该文件为HTML文件< ...
- UNITY把3D模型显示在UI层级上的思路
一般UI是处理于显示最高层级的, 因此这里的做法是 使用镜子效果,做镜子可使用renderTexture 然后启用一个摄像机对renderTexture进行数据填充, 然后在ui上使用Raw Imag ...
- jdk8中的StreamAPI
1.实体类 package com.zy.model; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.D ...
- js setTimeout 和 setInterval 区别
setTimeout和setInterval的语法相同.它们都有两个参数,一个是将要执行的代码字符串,还有一个是以毫秒为单位的时间间隔,当过了那个时间段之后就将执行那段代码.不过这两个函数还是有区别的 ...
- Python爬虫入门六之Cookie的使用
大家好哈,上一节我们研究了一下爬虫的异常处理问题,那么接下来我们一起来看一下Cookie的使用. 为什么要使用Cookie呢? Cookie,指某些网站为了辨别用户身份.进行session跟踪而储存在 ...
- 回顾2017系列篇(五):人工智能给UI/UX设计带来的影响
如今,我们正处于设计新纪年的转折点上,用机器人和人工智能方面的专家说法表达即“The end is near(终点近了)”.但这并不意味着世界末日,但未来机器人将毫无疑问地接管一部分目前被人类占领的工 ...
- HUST软工1501-1503班第2周作业成绩公布
说明 本次公布的成绩对应的作业为: 第2周个人作业:WordCount编码和测试 如果同学对作业成绩存在异议,在成绩公布的72小时内(截止日期4月26日0点)可以进行申诉,方式如下: 毕博平台的第二周 ...
- 我的ubuntu14.04配置
完全卸载java(移除所有 Java相关包 (Sun, Oracle, OpenJDK, IcedTea plugins, GIJ)) 转载修改, 原文见:http://blog.csdn.net/s ...
- socket API详解
send函数 int send( SOCKET s, const char FAR *buf, int len, int flags ); 不论是客户还是服务器应用程序都用send函数来向 ...