特定の文字列が所定の文字列のセットであるかどうかを確認する必要があります。それを行うにはテーブルアクセスと関数呼び出し+条件付き判定:どちらが速いのですか?
2つの方法が私の心に来た:特定の値
local isParticular = {
[string1] = true,
[string2] = true
}
print(isParticular[string1]) -- true
print(isParticular[randomString]) -- nil -> false
または条件決意
function isParticular(s)
return s == string1 or s == string2
end
print(isParticular(string1)) -- true
print(isParticular(randomString)) -- false
でそれをチェックする機能を設定するにはtrueを返すためにテーブルを設定
私が理解しているところでは、短絡評価のために関数呼び出しがstring1
のほうが時間がかかり、string2
の時間がかかるのに対して、テーブルメソッドは特定の文字列と異なる文字列の両方に対して同じ時間を要すると考えていますおよびrandomString
。
また、関数呼び出しとテーブルアクセスの両方が少しのオーバーヘッドを引き起こすことで知られていますが、短絡評価によって差が出る可能性があります(遅いと思います。ほとんどの場合、文字列はそれらのいずれとも一致しません)。
どうすればよいですか?
確かめるには1つの方法があります:両方のプロファイル!しかし、あなたは違いが分かるとは思っていません。あなたがチェックする必要があるアイテムがあまりないので、チェーンチェンジを使うことを考えているなら、スケーリングについて心配する必要はありません。 –