1 代码优化 1 尽量静态化如果一个方法能被静态,那就声明它为静态的,速度可提高1/4,甚至我测试的时候,这个提高了近三倍。当然了,这个测试方法需要在十万级以上次执行,效果才明显。其实静态方法和非静态方法的效率主要区别在内存:静态方法在程序开始时生成内存,实例方法(非静态方法 ...
1 尽量静态化
如果一个方法能被静态,那就声明它为静态的,速度可提高1/4,甚至我测试的时候,这个提高了近三倍。
当然了,这个测试方法需要在十万级以上次执行,效果才明显。
其实静态方法和非静态方法的效率主要区别在内存:静态方法在程序开始时生成内存,实例方法(非静态方法)在程序运行中生成内存,所以静态方法可以直接调用,实例方法要先成生实例再调用,静态速度很快,但是多了会占内存。
任何语言都是对内存和磁盘的操作,至于是否get='_blank'>面向对象,只是软件层的问题,底层都是一样的,只是实现方法不同。静态内存是连续的,因为是在程序开始时就生成了,而实例方法申请的是离散的空间,所以当然没有静态方法快。
静态方法始终调用同一块内存,其缺点就是不能自动进行销毁,而实例化可以销毁。
2 echo效率高于print
因为echo
没有返回值,print
返回一个整型。测试:
echo0.000929 - 0.001255 s (平均 0.001092 seconds)print0.000980 - 0.001396 seconds (平均 0.001188 seconds)
相差8%左右,总体上echo
是比较快的。
注意:echo
输出大字符串的时候,如果没有调整就会严重影响性能。打开Apache的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
机制效率降低的原因。
因此,我们在系统设计时,需要定义一套清晰的将类名与实际磁盘文件映射的机制。这个规则越简单越明确,autoload
机制的效率就越高。
结论:autoload
机制并不是天然的效率低下,只有滥用autoload
,设计不好的自动装载函数才会导致其效率的降低.
所以说尽量避免使用__autoload
魔术方法,有待商榷。
6 requiere_once() 和 include_once() 比较耗资源
这是因为requiere_once()
和include_once()
需要判断该文件是否被引用过,所以能不用尽量不用。常用require
/include
方法避免。鸟哥在其博客中就多次声明尽量不要用require_once
和include_once
。
7 在include和require中使用绝对路径
如果包含相对路径,PHP会在include_path
里面遍历查找文件。
海外公司注册、海外银行开户、跨境平台代入驻、VAT、EPR等知识和在线办理:https://www.xlkjsw.com
原标题:PHP代码优化
关键词:PHP
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们:
admin#shaoqun.com
(#换成@)。