我想检查一下在PHP5中浮点数占用多少内存。我读到memory_get_usage()不是很可靠。
我用它来尝试确定浮点数的大小,每次我创建一个新的浮点数,内存使用量增加168字节。我认为这似乎太大了,所以我的问题是-这个数字有多可靠?有没有更好的方法来近似浮点数的大小?
我的服务器是Ubuntu 14.04。
我想检查一下在PHP5中浮点数占用多少内存。我读到memory_get_usage()不是很可靠。
我用它来尝试确定浮点数的大小,每次我创建一个新的浮点数,内存使用量增加168字节。我认为这似乎太大了,所以我的问题是-这个数字有多可靠?有没有更好的方法来近似浮点数的大小?
我的服务器是Ubuntu 14.04。
1条答案
按热度按时间bakd9h0s1#
memory_get_usage()
返回PHP用于存储程序变量的内存量以及这些变量的内部簿记。memory_get_usage()
返回的值与用于存储脚本处理的实际值的内存量之间没有直接联系。因为PHP变量没有类型,所以每个变量都使用一个数据结构来存储任何类型的值。这意味着,即使对于
bool
值的1位有效负载,PHP也会使用大量内存(可能是您测量的168字节)。当值是数组的一部分时,数量甚至更大,因为数组是一种复杂的类型,混合了数组,哈希和双向链表的结构和功能。为了提供这些不同数据结构的功能,数组类型在它存储的对象之间保持链接,这些链接也使用内存。
PHP 7改变了内部存储数据的方式,平均而言,它将内存使用量减少到PHP 5的一半左右。
但是,如果你想知道有多少字节用于存储实际的浮点值(为了知道它的可能值的范围,例如),信息可以在documentation page of the float type中获得:
float
的大小与平台有关,但最大值约为1.8e308,精度约为14位十进制数是一个常见值(64位IEEE格式)。float
的传统大小),在64位和更大的平台上使用8个字节(传统的double
)。