1

在优化网站的内存时,我注意到内存消耗的飞跃,同时包含大量用于特定目的的 PHP 类文件(600+)。分开来看,我注意到包含一个 PHP 文件(因此可能编译为操作码)占用的内存大约是磁盘上文件大小的 50 倍。

在我的例子中,磁盘上的文件总共有大约800 kB大小(带有缩进和注释,纯类声明,字符串不多),但是在包含所有文件后,内存消耗大约高出40 MB

我这样测量(PHP 5.3.6):

echo memory_get_usage(), "<br>\n";
include($file);
echo memory_get_usage(), "<br>\n";

在 600 个文件的循环中,我可以看到内存消耗从基本上为零增长到 40 MB。(没有自动加载器加载额外的类,或者任何立即执行的全局代码或构造函数代码,它实际上只是纯粹的包含。)

这是正常行为吗?我假设操作码比纯源代码更紧凑(去掉所有空格和注释,或者只有一两个指令字节而不是“foreach”字符串等)?

如果这是正常的,有没有办法优化它?(我假设使用操作码缓存只会节省我的编译时间,而不是实际的内存消耗?)

4

1 回答 1

1

显然这就是它的方式。

我已经从头开始重新测试了这个:

  • 包含一个空的零长度文件:增加784 字节内存消耗
  • 包含一个空类 X { } 定义:2128 字节
  • 包含一个具有一个空方法的类:2816 字节
  • 包含一个具有两个空方法的类:3504 字节

在所有测试中,包含文件的文件大小都小于 150 字节。

于 2013-02-01T13:44:13.910 回答