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

问题描述 投票:0回答:5

我有一个网站,使用了很多常量,它们的定义如下,例如:

define('CONSTANT', 1)

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

php performance memory
5个回答
12
投票

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


5
投票

我想不会。您的脚本有性能问题吗?如果没有,那就不用担心。如果是这样,那么您采取了哪些措施来确定瓶颈所在?

如果您需要知道包含和解析包含您的定义的文件需要多长时间,那么我建议您计时。

$start = microtime (true);
include ('file_to_include.php');
echo (microtime (true) - $start);

1
投票

为什么要进行所有定义?如果您的流量很大,它可能只会减慢您的速度。如果您将它们全部使用,我可以看到减慢速度非常好。这是什么原因,也许有更好的方法(我从来不需要超过 5 个常量)


0
投票

我认为它不会比读取包含 200 个常量的文件产生更大的影响,然后它又会被你的磁盘缓存优化。至少比从数据库读取200个常量要好。如果您确实关心性能,请安装操作缓存,因此,每次都不需要任何额外的解析。对于内存来说,它取决于常量的类型,但不会太多。


0
投票

做吧,别担心。

<?php
$myfile = fopen("benchmark.php", "w") or die("Unable to open file!");
$txt = '<?php
';
$total = 1000;
for ($i = 1; $i <= $total; $i++) {
    $txt .= 'define("const_' . $i . '","adfdsfdsf' . $i . 'adsfdf");
    ';
}
$txt .= 'define("foo","adfdsf");';
$txt .= 'echo foo;';
fwrite($myfile, $txt);
fclose($myfile);

结果

A simple hello World
20,000 次每秒

$total = 1000;
19,000 次每秒

$total = 5000;
12,000 次每秒

© www.soinside.com 2019 - 2024. All rights reserved.