8

目前我的应用程序使用大约 7 MB 内存。

如果我检查它的大小,该数组似乎使用 700 KB strlen(serialize($array))))

  • 如果在我的应用程序中使用这个数组,并检查内存使用情况(用memory_get_peak_usage())我得到 14 MB。

  • 如果我不使用它,我会得到 7 MB。

如果这个数组需要 700 KB 序列化,为什么 PHP 需要 7 MB 来存储这个变量?还是我以错误的方式进行基准测试?

4

2 回答 2

10

如果这让您感到困扰,您想远离 PHP:http: //nikic.github.com/2011/12/12/How-big-are-PHP-arrays-really-Hint-BIG.html。PHP 数组就像一些生活空间。

如果可能的话,您可以使用SplFixedArray,但又一次关心 PHP 数组占用的空间。如果您正在寻找干净/高性能的东西,为什么要首先使用 PHP(是的,这是来自 PHP 人):)

于 2012-08-11T23:36:33.690 回答
1

序列化格式可以做一些内存优化,因为它们不需要让对象存在于内存中并使其完全可访问。他们只保持数据的完整性,而不是可访问性。如果这有助于回答您的问题。

于 2012-08-12T09:03:23.730 回答