これらのうち、ColdFusion でより効率的なのはどれですか?
isDefined('url.myvar')
また
structKeyExists(url, 'myvar')
これらのうち、ColdFusion でより効率的なのはどれですか?
isDefined('url.myvar')
また
structKeyExists(url, 'myvar')
最近 (CF8+) 速度の違いはそれほど大きくありません。ただし、structKeyExists
実際には少し高速です。理由は次のとおりです。
を使用するisDefined
と、渡した文字列が複数のスコープでキー名として検索されます。CF9 の時点で、チェックされた順序でのスコープのリストは次のとおりです: ( source )
スコープ名をisDefined
(like:のようif isDefined('variables.foo')
に) 使用しても、リストは順番にチェックされます。変数local.variables.foo
が定義されている場合は、 BEFORE variables.foo
が検出されます。
一方、structKeyExists
キー名の存在については、渡された構造のみを検索します。そのため、見なければならない場所がはるかに少なくなります。
私の意見では、より明示的なコード ( structKeyExists
) を使用することで、パフォーマンスが向上するだけでなく、コードがより読みやすく、保守しやすくなります。
読みやすく、何をしているかを最もよく表しているものを使用してください。
この 2 つの違いは信じられないほど小さく、心配する必要はほとんどありません。
遅さを実証する実証済みの再現可能なテスト ケースがない限り、コードの最適化に時間を無駄にしないでください。