我有一个很多其他PHP脚本包含的PHP文件,它们只使用该包含文件中定义的函数和变量的子集。 (我想这是大多数大型图书馆的惯常情况。)
出于这个原因,在大多数情况下,实际上只使用了包含文件的一小部分,并且大部分都被忽略了(未使用的函数,从未引用变量等)。
但AFAIK所有最新版本的PHP都带有Zend优化器,据我所知,它生成某种字节码,然后在运行时使用。因此,它应该过滤掉所有未使用的代码,因此即使大量未使用的函数也会在运行时产生零开销。
是这种情况还是在PHP中使用大型库会产生性能开销?
答案 0 :(得分:1)
来自PHP 5.5 change log of new features:
Zend Optimiser +操作码缓存已作为新增功能添加到PHP中 OPcache扩展。 OPcache通过存储提高了PHP性能 在共享内存中预编译脚本字节码,从而删除 需要PHP在每个请求上加载和解析脚本。
我从该声明中理解的是,每个.php文件在转换为字节码时都会保存到shared memory
中,因此不需要为每个文件重复转换。由于我们不再执行该步骤,因此处理时间会缩短。
这意味着未调用的函数和不需要的变量被声明并存储在缓存中但从未使用过。
在PHP中使用大型库是否存在性能开销?
答案几乎总是“是”。有许多基准测试表明,即使使用OPCach(例如APC或Zend Optimiser),库也很慢。