background image

PHP

——

进阶

PHP 高效率写法

本文是对提高 PHP 写法的效率的一些分享,供大家参考下

1.尽量静态化:
如果一个方法能被静态,那就声明它为静态的,速度可提高 1/4,甚至我测试的时候,这
个提高了近三倍。
当然了,这个测试方法需要在十万级以上次执行,效果才明显。

其实静态方法和非静态方法的效率主要区别在内存:静态方法在程序开始时生成内存,实
例方法在程序运行中生成内存,所以静态方法可以直接调用,实例方法要先成生实例,通过
实例调用方法,静态速度很快,但是多了会占内存。

任何语言都是对内存和磁盘的操作,至于是否面向对象,只是软件层的问题,底层都是一样
的,只是实现方法不同。静态内存是连续的,因为是在程序开始时就生成了,而实例申请的是
离散的空间,所以当然没有静态方法快。
静态方法始终调用同一块内存,其缺点就是不能自动进行销毁,而是实例化可以销毁。
2.echo 的效率高于 print,因为 echo 没有返回值,print 返回一个整型;
测试:
Echo
0.000929 - 0.001255 s (

 

平均 0.001092 seconds)

Print
0.000980 - 0.001396 seconds (

 

平均 0.001188 seconds)

相差 8%左右,总体上 echo 是比较快的。

注意,echo 大字符串的时候,如果没有做调整就严重影响性能。使用打开 apached 的
mod_deflate 进行压缩或者打开 ob_start 先将内容放进缓冲区。

3.在循环之前设置循环的最大次数,而非在在循环中;
傻子都明白的道理。
4.销毁变量去释放内存,特别是大的数组;
数组和对象在 php 特别占内存的,这个由于 php 的底层的 zend 引擎引起的,
一般来说,PHP

 

数组的内存利用率只有 1/10, 也就是说,一个在 C 语言里面 100M 内存的

数组,在 PHP 里面就要 1G。
特别是在 PHP 作为后台服务器的系统中,经常会出现内存耗费太大的问题。
5.避免使用像__get, __set, __autoload 等魔术方法;
对于__开头的函数就命名为魔术函数,此类函数都在特定的条件下初访的。总得来说,有
下面几个魔术函数
__construct(),__destruct(),__get(),__set(),__unset(),__call(),__callStatic(),__sleep()
,__wakeup(),__toString(),__set_state(),__clone(),__autoload()
其实,如果__autoload 不能高效的将类名与实际的磁盘文件(注意,这里指实际的磁盘文
件,而不仅仅是文件名)

 

对应起来,系统将不得不做大量的文件是 否存在(需要在每个

include path 中包含的路径中去寻找)的判断,而判断文件是否存在需要做磁盘 I/O 操作,
众所周知磁盘 I/O 操作的效率很低,因此这才是使得 autoload 机制效率降低的原因。