断言生产/发布服务器上的性能

时间:2012-09-21 11:43:36

标签: php assert

我想知道当ASSERT_ACTIVE设置为0(assert_options(ASSERT_ACTIVE, 0);时使用'assert'时是否存在任何性能错误。

例如,如果我有一个包含大量断言的庞大项目,那么它会不会比那些断言不存在更慢?在大多数语言中,这两种情况之间没有任何区别,但我认为这是因为它们是编译的,而不是像PHP一样随时执行。

如果没有性能差异,是否可以在PHP中创建类似于assert的函数,这样当未设置标志/变量时,对该函数的所有调用都被完全忽略? (这样的功能可以用来使开发/调试更容易,但在推出的网站上没有任何价值)。

1 个答案:

答案 0 :(得分:1)

性能打击并不是很重要......随心所欲地使用它。

创建一个类似的函数,在未设置标志时忽略调用...见下文。

define('ASSERT_ENABLED', true);

function assertEquals($a, $b)
{
    if( !defined('ASSERT_ENABLED') || !ASSERT_ENABLED ) { 
        return;
    }

    if($a !== $b) { 
        throw new \RuntimeException("Failed asserting that $a === $b");
    }
}