加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP 代码优化测试(Benchmark数据测试)

发布时间:2020-12-13 01:59:22 所属栏目:PHP教程 来源:网络整理
导读:《PHP 代码优化测试(Benchmark数据测试)》要点: 本文介绍了PHP 代码优化测试(Benchmark数据测试),希望对您有用。如果有疑问,可以联系我们。 PHP 代码优化测试【Benchmark数据测试】 Benchmark 测试之前我们先来了解Benchmark. 直接下载:http://pear.

《PHP 代码优化测试(Benchmark数据测试)》要点:
本文介绍了PHP 代码优化测试(Benchmark数据测试),希望对您有用。如果有疑问,可以联系我们。

PHP 代码优化测试【Benchmark数据测试】

Benchmark

测试之前我们先来了解Benchmark.

直接下载:http://pear.php.net/package/Benchmark/download

Benchmark工具类包共有三个文件,分别是Timer.php、Iterate.php和Profiler.php,三个工具类功能相同,只是侧重点分歧,都是用于调试代码获取程序的执行时间.

1,Benchmark_Timer类原理与通过microtime函数获取微秒时间再比拟前后两个时间值的差相同.

2,Benchmark_Iterate类用于调试函数的平均执行光阴.

3,Benchmark_Profiler类用于统计代码和函数的执行时间以及函数的挪用次数.

我们用它来测试执行结果,使用它必要安装pear

1) $row['id'] =0比 $row[id]=0 快,次数越年夜越明显/生产环境(Linux)下测试1个数量级;

首先来测试直接写id的环境:

PHP 代码优化测试(Benchmark数据测试)

测试成果:

PHP 代码优化测试(Benchmark数据测试)

而当我们把$arr[id] = 0; 改为

PHP 代码优化测试(Benchmark数据测试)

测试成果为:

PHP 代码优化测试(Benchmark数据测试)

可以看到,提升速度比拟明显,因此,我们要规范数组的字段,不能写有风险的代码,$arr[id]这样子写有很大的风险.

2) 递增(递减)一个预预定义的局部变量要比递增(递减)一个未定义的局部变量快;差异较大

还是上述的代码,循环部门我们改为:

PHP 代码优化测试(Benchmark数据测试)

执行耗时为:

PHP 代码优化测试(Benchmark数据测试)

而我们改为:

PHP 代码优化测试(Benchmark数据测试)

执行耗时:

PHP 代码优化测试(Benchmark数据测试)

耗时缩减挺多

3)在可行的情况下,避免使用正则表达式,str_replace 函数比 preg_replace,差异还是很明显的

首先来看使用正则的环境下:

PHP 代码优化测试(Benchmark数据测试)

耗时:

PHP 代码优化测试(Benchmark数据测试)

而使用:

PHP 代码优化测试(Benchmark数据测试)

耗时会削减挺多:

PHP 代码优化测试(Benchmark数据测试)

同样我们可以延伸出,尽量使用php的函数去完成功能,那些函数底层c都是经过优化的,执行效率比拟高.即:尽量采用PHP内置函数,且选择效率高的函数

4)在有需要的时候使使用引用(&),测试差别较大,接近1个数量级

引用的话,就不消像正常传递变量那样,复制多一个变量,而是直接使用地址即可.

我们先不消引用:

PHP 代码优化测试(Benchmark数据测试)

耗时:

PHP 代码优化测试(Benchmark数据测试)

而当我们在循环中改为:

PHP 代码优化测试(Benchmark数据测试)

耗时为:

PHP 代码优化测试(Benchmark数据测试)

光阴上缩小了很多.

5 ) 判断字符串长度时,可用isset($str{15})代替strlen($str) < 15;因为isset()作为一种语言布局,而strlen()是函数,语言布局快于函数;

使用strlen($str)函数来断定,代码如下:

PHP 代码优化测试(Benchmark数据测试)

执行耗时:

PHP 代码优化测试(Benchmark数据测试)

而当我们使用

PHP 代码优化测试(Benchmark数据测试)

断定,将会加快很多,执行耗时:

PHP 代码优化测试(Benchmark数据测试)

6 ) $_SERVER['DOCUMENT_ROOT']代替str_replace('//','/',dirname(__FILE__) .'/') ; wamp测试无太大差异/Linux生产环境测试性能提升 500% (5倍)

首先我们先用 $path = str_replace('//',dirname(__FILE__) .'/'); 测试:

PHP 代码优化测试(Benchmark数据测试)

执行耗时:

PHP 代码优化测试(Benchmark数据测试)

当改为:

PHP 代码优化测试(Benchmark数据测试)

执行耗时:

PHP 代码优化测试(Benchmark数据测试)

几乎不在毫秒级别内.耗时少许多.

7 ) 获取Unix时间戳时用$_SERVER['REQUEST_TIME'] 取代time(); 测试性能提升很多

首先我们使用time() 来获取:

PHP 代码优化测试(Benchmark数据测试)

执行耗时:

PHP 代码优化测试(Benchmark数据测试)

而改为:

PHP 代码优化测试(Benchmark数据测试)

的时候,执行耗时减少许多:

PHP 代码优化测试(Benchmark数据测试)

几乎不在毫秒级别内

其实还有很多其他的各类优化小细节,例如:

* foreach函数,没有用到键的时候,就不要加键.

* include 文件时尽量使用绝对路径,因为它避免了 PHP 去 include_path 里查找文件的速 度,解析操作系统路径所需的时间会更少.【测试差异其实不明显】

* 用单引号(’’)代替双引号(””),单引号为强类型,将其中的所以字符都认作字符,而双引号的为弱类型,它会检测其中是否存在变量 【测试差异不大,但是用双引号有风险】

* Apache 处理 PHP 脚本的速度要比静态页面慢 2-10 倍,因此尽量采用多的静态页面,少的脚本;PHP程序使用文件缓存性能会倍增【不消测试我们也知道,测试速度快很多】;

* 一般不建议启用auto_start(session.auto_start:是否自动启用),因为创建Session必要消耗系统资源,我们通常只会在必要用到Sesson时,才会使用session_start函数来开启Session功能.

优化无尽头.............................................................

欢迎参与《PHP 代码优化测试(Benchmark数据测试)》讨论,分享您的想法,编程之家 52php.cn为您提供专业教程。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读