【问题标题】:Which is better, constants or variables? [duplicate]哪个更好,常量还是变量? [复制]
【发布时间】: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 BenchVariable Bench

标签: php memory optimization


【解决方案1】:

我更喜欢使用变量,因为声明变量本身不需要调用函数,而定义是定义值的函数。

【讨论】:

    【解决方案2】:

    分配单个变量和定义单个常量之间的差异可能非常小,以至于在程序的其余部分中随机变化会相形见绌。

    两者都是在复杂类型结构中注册名称和值之间的关联的高级构造,受底层引擎中的各种优化和特殊情况的影响。

    如果您有数百个这样的定义,您可能会开始注意到一个小的差异,但此时您的程序设计有问题。

    【讨论】:

      猜你喜欢
      • 2011-07-22
      • 2012-09-11
      • 1970-01-01
      • 2011-03-30
      • 1970-01-01
      • 2017-12-30
      • 2011-12-07
      • 2017-12-27
      • 1970-01-01
      相关资源
      最近更新 更多