PHP语言性能优化优化啥?

  如下图所示,PHP直接执行的是opcode,所以我们尽量减少扫描和转码解析。

  

  这是我们第一个优化点,尽量使用PHP内置的函数代替我们的代码来实现同样的功能。

  和我们自己写的代码一样,PHP本身内置了很多函数,所以实现同一个功能我们可以使用多个内置函数来实现,那么是不是内置函数也会有性能区别呢?

  答案当时是肯定的,因为每个函数的运行量不同(类似我们的代码,实现一个功能,使用10行代码和使用100行代码会有一定的时间差),生成的opcode也不一样。这就是我们优化的第二个点,我们在使用内置函数的同时,需要选择正确的内置函数。

  还有其他的优化点在后续的文章有说明,这里不多赘述了。

 

PHP内置的函数该怎么选择?

  PHP内置的函数有上千个,我们怎么选择那个是我们项目最需要的确实是比较麻烦的事情。平常一定需要熟悉常用的函数:处理字符串的,处理数组的,处理数据库的。(对于常用的函数,我后面会专门写相关的专题来对比)

怎么测试耗时?

  1、使用microtime()函数,该方法用在某段程序的耗时。下面是简单的获取时间的函数,需要在运行前断一下和运行结束断一下。

function current_time(){
list($usecond,$second) = explode(" ", microtime());
return ((float)$usecond+(float)$second);
}

  2、使用linux自带的time命令,该方法可以用在整个PHP文件的运行耗时。命令可以看到程序运行的系统时间,程序消耗时间(user)很真实时间。

  

  上图显示耗时12毫秒。

题外话:测试一下Apache和Nginx的性能

请求100次,每次并行100个请求。左边是Apache,右边是Nginx。

  Apache Nginx
每秒请求量 4.32 4415.99

每个请求耗时(ms)

231.562 0.226 

  

  文章为作者学习所得,有纰漏,请留言指出,谢谢支持!转载请附上本文章的连接

PHP性能之语言性能优化说明的更多相关文章

  1. PHP性能之语言性能优化:安装VLD扩展——检测性能

    使用Linux命令安装 //下载安装包 wget http://pecl.php.net/get/vld-0.14.0.tgz //解压包 tar zxvf vld-0.14.0.tgz //进入编译 ...

  2. PHP性能之语言性能优化:魔术方法好不好?

    魔术方法是什么鬼? 魔术方法,也叫魔鬼函数.只要学过PHP的都知道什么是魔术方法,魔术方法就是在某些条件下自动执行的函数. PHP的魔术方法主要有下面几个,其他的参考PHP官方手册 __constru ...

  3. PHP性能之语言性能优化:vld——查看代码opcode的神器

    vld介绍 vld是PECL(PHP 扩展和应用仓库)的一个PHP扩展,现在最新版本是 0.14.0(2016-12-18),它的作用是:显示转储PHP脚本(opcode)的内部表示(来自PECL的v ...

  4. Go语言性能优化

    原文:http://bravenewgeek.com/so-you-wanna-go-fast/ 我曾经和很多聪明的人一起工作.我们很多人都对性能问题很痴迷,我们之前所做的是尝试逼近能够预期的(性能) ...

  5. 大型php网站性能和并发访问优化方案(转载自php中文网)

               网站性能优化对于大型网站来说非常重要,一个网站的访问打开速度影响着用户体验度,网站访问速度慢会造成高跳出率,小网站很好解决,那对于大型网站由于栏目多,图片和图像都比较庞大,那该怎 ...

  6. 大型php网站性能和并发访问优化方案

    网站性能优化对于大型网站来说非常重要,一个网站的访问打开速度影响着用户体验度,网站访问速度慢会造成高跳出率,小网站很好解决,那对于大型网站由于栏目多,图片和图像都比较庞大,那该怎么进行整体性能优化呢? ...

  7. Linq语言性能比较

    我不只一次听到不少做技术的朋友随口一句,“linq性能是最差的”,由于缺少具体的数字比照也就没在意,但心里隐隐觉得事实应该不是这样的,我记得我第一次听到有人贬低C# 3.0是在我工作后不久的一个夏季, ...

  8. 开发语言性能对比,C++、Java、Python、LUA、TCC

    一直想做开发语言性能对比,刚好有时间都做了给大家参考一下, 编译类:C++和Java表现还不错 脚本类:TCC脚本动态运行C语言,性能比其他脚本快好多... 想玩TCC的同学下载测试包,TCC目录下修 ...

  9. Web服务器性能监控分析与优化

    Web服务器性能监控分析与优化 http://www.docin.com/p-759040698.html

随机推荐

  1. k8s学习

    k8s简介 在学习k8s之前,相信大家和我一样,肯定都学习和使用过docker容器,并且对容器技术有了一个基本的认识.引用张磊老师的总结:其实一个"容器",实际上是一个由Linux ...

  2. UITableView的横向使用

    UITableView只支持竖向显示,要实现横向的显示,需要设置tableView 和cell 的transform属性为CGAffineTransformMakeRotate(-M_PI/2) // ...

  3. espresso Seekbar

    package test.utils; import android.support.test.espresso.PerformException; import android.support.te ...

  4. SimpleDateFormat关于时间类的一些常用处理

    项目中经常会出现对时间类的一些处理,记录一下: 实例一:/** * 获取当前时间是星期几? * * @param args */ public static void main(String[] ar ...

  5. kubernetes1.5.2--部署DNS服务

    本文基于kubernetes 1.5.2版本编写 在kubernetes1.2之前,采用skydns+kube2dns+etcd的方式来部署dns.而从1.3开始,则部署方式有了一点儿变化,将skyd ...

  6. 利用【深度网络】高效提取feature

    extracting features from a learned model, and add some new features yourself.

  7. 关于可变参数列表stdarg

    1.对于可变参数 可变参数列表通过stdarg.h中的宏实现: 主要有一个va_list类型 三个宏:va_start,va_arg,va_end; va_start格式: va_start(argu ...

  8. Makefile学习之通配符和自动变量

    规则中的通配符 “*” ,“?” ,“ [...]”, " % " , " wildcard " 1.“*”  *.c表示所有后缀为.C的文件: 如果文件中用到 ...

  9. Windows API常用函数

    转自:http://www.cnblogs.com/xiashengwang/p/4026259.html .NET中虽然类库很强,但还是有些时候功能有限,掌握常用的api函数, 会给我们解决问题提供 ...

  10. ES6里关于模板字面量的拓展

    JS 的字符串相对其他语言来说功能总是有限的,事实上,ES5中一直缺乏许多特性,如多行字符串.字符串格式化.HTML转义等.ES6通过模板字面量的方式进行了填补,模板字面量试着跳出JS已有的字符串体系 ...