PHP:如何在检查常量是否存在时避免defined()?

PHP:如何在检查常量是否存在时避免defined()?,php,performance,Php,Performance,许多经验丰富的开发人员都知道,函数defined()比任何其他检查慢19倍左右 我遇到了一个问题,我需要有5000多条记录和7个defined() 在这种情况下,不可能更改项目工作或分块的方式。有什么好的解决方案或想法可以避免defined()函数吗?您尝试过使用 constant ( string $name ) : mixed 返回常量的值,如果常量不是空的,则返回NULL 定义 假设在php中,null==false if (defined($name)) 及 几乎相同 我测试了以下内

许多经验丰富的开发人员都知道,函数
defined()
比任何其他检查慢19倍左右

我遇到了一个问题,我需要有5000多条记录和7个
defined()

在这种情况下,不可能更改项目工作或分块的方式。有什么好的解决方案或想法可以避免
defined()
函数吗?

您尝试过使用

constant ( string $name ) : mixed
返回常量的值,如果常量不是空的,则返回NULL 定义

假设在php中,null==false

if (defined($name))

几乎相同

我测试了以下内容:

如果(!defined('TEST'))继续

如果(!@测试)继续

如果(NULL===@常量('TEST')继续

我对PHP7.1的衡量标准是:

如果(!@测试)继续

但是如果(!defined('TEST'))继续,两者都比


显然,我们还没有更快的解决方案,
defined()
仍然是检查常量是否存在的更快方法。

没有进一步的上下文,很难说。你用常数做什么?您的流程中哪一部分适合更改?但听起来很奇怪。我的相当低端的计算机在冷运行(下一次执行13秒)后的26毫秒内运行7*5000定义检查的循环。这真的是您需要完成的优化级别吗?计算
defined()
一次,并将结果存储到变量中。在循环中,检查变量。但它是否更快…?@deceze这就是为什么我将其命名为“你试过了吗”。因为我找不到他们执行速度的信息。嗯。。。我没想过<代码>如果(NUII!==常量('SOMETHING'))
可以是某种解决方案,但需要测试。我会让你知道的。谢谢@EinārsBistrovs如果未定义常数,并且速度比
define()
if (constant($name))