C 在PHP常量中使用计算值是否有好处?

C 在PHP常量中使用计算值是否有好处?,c,c++,php,constants,C,C++,Php,Constants,: 我尝试比较两个示例的执行时间和内存使用情况: <?php $start = hrtime(true); const COLOR_MAX = (2 << 7) - 1; //const COLOR_MAX = 255; $eta = hrtime(true) - $start; $memUsage = memory_get_usage(); echo 'end: '.($eta / 1e+6).' memory usage: '.$memUsage . PHP_EOL;

:

我尝试比较两个示例的执行时间和内存使用情况:

<?php 
$start = hrtime(true);
const COLOR_MAX = (2 << 7) - 1;
//const COLOR_MAX = 255;
$eta = hrtime(true) - $start;
$memUsage = memory_get_usage();
echo 'end: '.($eta / 1e+6).' memory usage: '.$memUsage . PHP_EOL;
结果对于静态值,运行三次:

end: 0.003254 memory usage: 392136
end: 0.003289 memory usage: 392136
end: 0.00338 memory usage: 392136
end: 0.003421 memory usage: 392136
end: 0.003095 memory usage: 392136
end: 0.003705 memory usage: 392136
内存或执行时间的任何差异似乎都可以忽略不计


注意:使用PHP7.4.6进行测试。

即使是在C语言中,也不是真正的优化,因为const将在编译时计算。使用位移位而不是键入文字帮助提醒“这将使用这么多位,占用这个插槽”,如果将有大量按位操作,例如在一个字节中填充多个值(或者在PHP的情况下,在单个变量中)

这是一个常量值,而不是编译器宏,则非常有用。当解析类文件时,它将被精确地评估一次,并且执行此操作所需的时间/资源量非常小,即使要对数百万或数十亿次迭代进行基准测试,也在误差范围之内


除了肉袋读/写代码的偏好之外,这样或那样做不会产生任何后果。

除了
const COLOR\u MAX=255对开发人员更友好,定义变量将比计算变量花费更长的时间,因此没有区别really@LawrenceCherone请添加答案而不是评论。请参阅“我何时不应发表评论”一节?很可能是在没有计算器的情况下计算2-1的7次方,为了得到7个二进制的
1111111
,所以它可能比255更清晰,因为假设我们有
32768-1
,这样的常数将意味着什么,但是
(2@sᴀᴍ在…上ᴇᴌᴀ 我99%的答案都是在评论中给出的,当定义一个常数时,它基本上是基于意见的,大约需要0.0001ms。任何答案都需要对其进行基准测试,并包括使用define()之间的差异有些人可能更喜欢
const COLOR\u MAX=2e2+55;
,你可能需要看到任何差异
end: 0.003254 memory usage: 392136
end: 0.003289 memory usage: 392136
end: 0.00338 memory usage: 392136
end: 0.003421 memory usage: 392136
end: 0.003095 memory usage: 392136
end: 0.003705 memory usage: 392136