【发布时间】:2013-07-16 18:10:09
【问题描述】:
我一直在用 PHP 进行一些测试,我注意到在多个文件上执行 include 与包含所有函数的文件相比要慢得多。
我的测试涉及创建 1025 个文件,其中 1024 个包含文本 <?php class cls$i {} ?>(其中 $i 是文件号),以及 1 个文件是之前文件中所有文本的串联。然后我有两个功能,一个用于测试每个案例。加载单个文件的测试花费了大约6ms 编译为字节码并使内容可供系统使用,然而,1024 个文件的组合几乎花费了600ms。
在大小方面,1024 个单独的文件与单个文件的大小完全相同。我也在运行APC 来缓存字节码,但实际上,它只减少了几毫秒。
我还创建了一个 ramdisk 来保存所有文件,但这只是稍微快一点(平均 10 毫秒)。
那么,话虽如此,为什么单个文件比单个文件慢得多?是因为 PHP 中的加载引擎效率显着低下,还是我在配置(在我的本地系统上,标准 AMPPS 安装)中做了相当大的错误?
【问题讨论】:
-
@mario 我的 Ampps 系统在带有 NTFS 和 RAMDISK 仿真器的 Windows 8 上运行,但我在 Arch Linux 上使用 EXT3 和 /tmp 进行了相同的测试,两者都差不多只有几毫秒,所以我认为这无关紧要。我刚刚重新运行完代码,其中每个类都有几个静态的,几个可实例化的函数,结果几乎没有变化
标签: php performance include