定义很多常量会引起性能或内存问题吗?

15
我有一个网站,使用了很多常量,这些常量被定义为如下所示的格式,例如:
define('CONSTANT', 1)

我目前有一个像这样的大约200个定义的列表。每次加载页面时都会运行此列表。这是否会严重影响我的性能或内存使用?


全局常量的内存使用与数组相同(200个条目为40KB)。 - mario
4个回答

12

避免在每次页面加载时使用200个常量列表,有很多理由,但性能和内存使用不是其中之一。通常,回答这些问题的最佳方法是运行基准测试。在加载200个常量时,同时测量页面加载时间和内存使用情况。进行数千次测量并查看数据。我怀疑你会发现差异微不足道。微观优化通常是浪费时间的。


5
我想不会有问题。您的脚本是否出现性能问题?如果没有,那就不用担心。如果有,那么您已经确定了瓶颈在哪里吗?
如果您需要知道包含和解析定义文件所需的时间,则建议进行计时。
$start = microtime (true);
include ('file_to_include.php');
echo (microtime (true) - $start);

1

为什么要这么多定义?如果你的流量很大,这可能会减慢速度。如果你把它们都用上了,我可以看到它会减缓速度。有什么原因吗?也许有更好的方法(我从来没有需要超过5个常量)


5
“i've never needed more than 5 constants” 的意思是“我从来不需要超过五个常量”。而“Yes, and 640kb is enough for everybody”的意思是“是的,对于每个人来说,640KB就足够了”。 - zerkms
等一下,这是意味着你使用字面量吗? - JJJ
@zerkms:显然,比尔·盖茨从未说过这句话 - Asaph
@Asaph: 我知道,但是我个人认为那句话(无论真实还是虚构)完美地契合了这次讨论;-) - zerkms

0

我认为这不会比读取包含200个常量的文件更有影响,而且它还会被磁盘缓存优化。至少它比从数据库中读取200个常量要好。如果你关心性能,安装一个op缓存,因此每次都不需要进行额外的解析。对于内存来说,这取决于您的常量类型,但它不会太多。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接