我需要檢查一個特定的字符串是否是一組預定義的字符串之一。表訪問vs函數調用+條件確定:哪個更快?
兩種方法做到這一點來到我的腦海:建立一個表,在一個特定的值
local isParticular = {
[string1] = true,
[string2] = true
}
print(isParticular[string1]) -- true
print(isParticular[randomString]) -- nil -> false
返回true或設置功能與條件決定
function isParticular(s)
return s == string1 or s == string2
end
print(isParticular(string1)) -- true
print(isParticular(randomString)) -- false
檢查它根據我的理解,對於任何特定的字符串和不同的字符串,表格方法都需要相同的時間,而由於短路評估的函數調用將花費更少的時間用於string1
以及更多的時間用於string2
和randomString
。另外,函數調用和表訪問都會導致一些額外開銷,但也許短路評估可能會產生差異(在我認爲更慢的時候,尤其是考慮到我有超過2個特定的字符串和大多數時候這個字符串都不會與其中的任何一個匹配)。
那麼我應該使用什麼方法?
只有一種方法可以肯定:配置文件都!但是,我懷疑你會看到不同之處:如果你正在考慮使用'或'鏈接,那告訴我你沒有太多的東西需要檢查,所以不用擔心縮放。 –