【发布时间】:2015-11-03 04:35:34
【问题描述】:
我们可以给常量或变量赋值。从内存和优化的角度来看,哪个更好?
define("X",5);
或
$x = 5;
在这两种情况下整数是否占用相同的内存?哪一个占用更多内存空间且运行速度更快?
我已经在命令提示符下的 php.exe 中分析了这个任务 100k 次,并在这里解释......
//Defining a constant Test
$DefConst_TimeStart = microtime();
$DefConst_MemStart = memory_get_usage();
for($i=1;$i<=100000;$i++){
define("x$i",$i);
}
$DefConst_MemEnd = memory_get_usage();
$DefConst_TimeEnd = microtime();
//Variable test
$Variable_TimeStart = microtime();
$Variable_MemStart = memory_get_usage();
for($i=1;$i<=100000;$i++){
${"x".$i} = $i;
}
$Variable_MemEnd = memory_get_usage();
$Variable_TimeEnd = microtime();
//Output of the results
echo "Define Constant: Time: ".($DefConst_TimeEnd - $DefConst_TimeStart)." ms | Memory: ".($DefConst_MemEnd - $DefConst_MemStart)." Bytes\n";
echo "Setting Variable: Time: ".($Variable_TimeEnd - $Variable_TimeStart)." ms | Memory: ".($Variable_MemEnd - $Variable_MemStart)." Bytes\n";
根据分析:
所用时间:变量执行速度比常量快
内存使用:常量比变量占用更少的内存
输出图像
你可以从github下载文件进行测试
Benchmark example to test speed and memory usage
让我知道我是否在正确的轨道上?
【问题讨论】:
-
我已经解决了这个问题,但我无法得到关于内存优化的确切答案
-
我尝试对一个简单的常量与变量进行基准测试,但在线工具存在限制。 Constant Bench 与 Variable Bench
标签: php memory optimization