不久前,在对它们进行了一些操作之后,我就赋值变量本身进行了辩论。
将变量分配给自身 [ AI ]:
echo memory_get_usage() . "\n"; // 645680
$repeatedString = str_repeat('Hello,', 10000);
echo memory_get_usage() . "\n"; // 705944, AI_delta1 = 60264
$repeatedString = explode(',', $repeatedString);
echo memory_get_usage() . "\n"; // 3337888, AI_delta2 = 2631944
echo memory_get_peak_usage() . "\n"; // AI_peak = 3401024
将变量分配给另一个变量 [ AAV ]:
echo memory_get_usage() . "\n"; // 645752
$repeatedString = str_repeat('Hello,', 10000);
echo memory_get_usage() . "\n"; // 706024, AAV_delta1 = 60272
$explodedString = explode(',', $repeatedString);
echo memory_get_usage() . "\n"; // 3398256, AAV_delta2 = 2692232
echo memory_get_peak_usage() . "\n"; // AAV_peak = 3400984
我在这两种情况下都创建了内存使用测试并减去值:
AAV_delta1 - AI_delta = 8
AAV_delta2 - AI_delta2 = 60288
AAV_peak - AI_peak = -40
根据这个结果,使用哪种方法并不重要,内存使用 - 相同。$repeatedString
我是否应该在下面的代码中使用变量只是一个问题。
我的结论是正确的还是我的测试不正确?
为什么会这样?
还有一个问题:AAV_delta1 - AI_delta = 8
,我希望它应该等于 0。为什么等于 8?
注意:内存使用量可能因您的系统而异。
PHP 版本:5.3.5-1ubuntu7.11。