我想问几个PHP效率上的问题。

#1 redguan

一、

看到有些程序,类都没经过实例,而是通过
类名::方法
这种方法调用,这样提升的效率是否明显?

二、

require 一个200K的函数文件。与 折散两到三个函数文件再分别require。哪种效率更高?

三、

目前开发的趋势是,将传统零星的变量(全局)。全部用一个数组封装(象DISCUZ x系列的 $_G),已经非常大了(差不多1M)

这样的优势是使用方便,但是缺点有什么呢?PHP会不会因此一次性预读多过的内容而变慢?(理论一个页面请求:全局数组1M+必要的类库和函数库文件1M+控制部分的程序1M)。这样理论达到3M,如果再加上模版的200K。那就是3。2M。这样服务器的内存会不会因此而被PHP吃尽?

2010-10-15 17:55:54

#2 jake

1. 静态调用类的成员函数,的确比实例化后更高些的效率,但不明显。
2. 一个require比三个require效率高些,因为读入文件需要文件IO的开销,当然读取次数是越少越好。
3. 计算机的内存(包括物理内存和虚拟内存,而且操作系统有精良的算法来管理),的确是用来“吃”的,任何一个软件在运行的时候,影响速度更大的是CPU时间,而不是内存。所以就算内存占用多些,也问题不大。而且不仅是全局变量的内存占用,从理论上来说,PHP运行期间,PHP文件本身和程序中任何一个变量(包括全局变量和普通变量,函数,资源等)也是放在内存里面的。这个问题的结论就是:PHP全局变量的内存占用是正常的。

以上只是理论上的说法,实际上开发中并不需要担心这些问题,毕竟我们已经离“大学教科书中说的计算机”的时代已经很远了(一般说这些程序资源开销问题的书籍都是说2000年之前的情况),现在的计算机,已经不是当初的那么“软弱”了。
不好理解对吧?其实可以这样想一下,JAVA和.NET的运行效率,开发PHP的人都能够感觉到,JAVA这些东西有多么的慢~~~如果现在还有上述的资源问题存在,那么JAVA.NET之类的程序就不应该发展起来,而应该越做越接近机器码——C语言甚至是汇编语言才是王道。

2010-10-15 22:05:32

#3 改变命运2023

jake 发表于 2010-10-15 22:05
1. 静态调用类的成员函数,的确比实例化后更高些的效率,但不明显。
2. 一个require比三个require效率高些 ...
受教了

2013-01-31 10:42:08