繁体   English   中英

在 PHP 常量中使用计算值有好处吗?

[英]Is there a benefit to using a calculated value in a PHP constant?

我查看了包含以下表达式的代码

 const COLOR_MAX = (2 << 7) - 1;

我知道 OP 对其他语言(如有一些经验,其中此类操作更常见,并且可能对性能或其他方面有好处。

在内存或处理时间方面,使用位移和减法后的计算值定义常量是否有任何优势,或者是否足够简单,只需使用该值:

const COLOR_MAX = 255;

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

<?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;

移位的结果,运行 3 次:

end: 0.003254 memory usage: 392136
end: 0.003289 memory usage: 392136
end: 0.00338 memory usage: 392136

结果为静态值,运行 3 次:

end: 0.003421 memory usage: 392136
end: 0.003095 memory usage: 392136
end: 0.003705 memory usage: 392136

内存或执行时间的任何差异似乎都可以忽略不计。

注意:使用 PHP 7.4.6 测试。

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

它是一个常量值,而不是编译器宏。 当解析类文件时,它只会被评估一次,并且这样做所需的时间/资源量非常小,即使您要对数百万或数十亿次迭代进行基准测试,也会在误差范围内。

除了肉袋阅读/编写代码的偏好之外,以一种或另一种方式做这件事没有任何后果。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM