1

ASSERT_ACTIVE0(assert_options(ASSERT_ACTIVE, 0);

たとえば、多くのアサーションが含まれる巨大なプロジェクトがある場合、それらのアサーションが存在しない場合よりも遅くなりますか?ほとんどの言語では、これら2つのケースに違いはありませんが、これは、PHPのようにコンパイルされ、オンザフライで実行されないためだと思います。

パフォーマンスに違いがないassert場合、フラグ/変数が設定されていないときにその関数へのすべての呼び出しが完全に無視されるように、PHPと同様の関数を作成することは可能ですか?(このような関数は、開発/デバッグを容易にするために使用できますが、起動されたWebサイトでは何の価値もありません)。

4

1 に答える 1

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");
    }
}
于 2012-09-21T12:12:09.100 に答える