在为内存优化网站的同时,我注意到内存消耗出现飞跃,同时为特定目的包含大量PHP类文件(600+)。把事情分开,我注意到包括一个PHP文件(因此大概编译到操作码)比磁盘上的文件大小大约多50倍。包含PHP操作码内存猪?
在我的情况下在磁盘上的文件是一起围绕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”字符串等)?
如果这是正常的,有没有一种方法来优化它? (我假设使用操作码高速缓存只会让编译时间,而不是实际的内存消耗?)
你只是包括一个文件。很难想象更多*正常的东西。但是,基于的操作码假设是什么? – Jon
我期望内存消耗在增加后增长,但不会那么大。操作码假设是基于关于操作码应该如何工作的基本知识,具有简洁的二进制指令_code_而不是长语法__strings_,我觉得应该减少内存密集度。 –
你正在包含什么文件? –