目前我的应用程序使用大约 7 MB 内存。
如果我检查它的大小,该数组似乎使用 700 KB strlen(serialize($array))))
。
如果在我的应用程序中使用这个数组,并检查内存使用情况(用
memory_get_peak_usage()
)我得到 14 MB。如果我不使用它,我会得到 7 MB。
如果这个数组需要 700 KB 序列化,为什么 PHP 需要 7 MB 来存储这个变量?还是我以错误的方式进行基准测试?
如果这让您感到困扰,您想远离 PHP:http: //nikic.github.com/2011/12/12/How-big-are-PHP-arrays-really-Hint-BIG.html。PHP 数组就像一些生活空间。
如果可能的话,您可以使用SplFixedArray
,但又一次关心 PHP 数组占用的空间。如果您正在寻找干净/高性能的东西,为什么要首先使用 PHP(是的,这是来自 PHP 人):)
序列化格式可以做一些内存优化,因为它们不需要让对象存在于内存中并使其完全可访问。他们只保持数据的完整性,而不是可访问性。如果这有助于回答您的问题。