我一直在对我编写的 PHP 类进行基准测试。它遍历 MySQL 表,因此您可以通过向其发送唯一 ID 来获取给定查询的下一条和上一条记录。该类允许您通过两种方式执行此操作:
将整个结果集加载到 PHP 变量中,并通过使用 PHP 循环遍历数组来获取上一个/下一个记录
执行两个 MySQL 查询并将上一个/下一个记录 ID 发送回 PHP
我已经建立了一个包含大约 1,000,000 条记录的测试表;表大小约为 25 MB。
考虑到这一点,我希望方法 1 比方法 2 占用更多的内存,因为整个结果集都被加载到 PHP 变量中(尽管只有一列)。但是,当我调用 memory_get_peak_usage 时,内存总是在 0.5 MB 左右。如果我将 true 作为参数传递,则两者都返回 ~0.75 MB。具有讽刺意味的是,方法 2 返回的内存使用量比方法 1 略高。我猜根据表结构和大小,方法 1 应该比方法 2 使用大约 10 MB,但事实并非如此。
PHP 的 memory_get_peak_usage 有多可靠?PHP 的内存管理是否有一些聪明的特性使它使用的比你想象的要少得多?
谢谢。