我需要检查特定字符串是否是一组预定字符串之一。
我想到了两种方法:设置一个表以在特定值上返回 true
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
据我了解,表方法对于任何特定字符串和不同字符串都将花费相同的时间,而由于短路评估而导致的函数调用对于string1
将花费更少的时间以及 string2
和 randomString
的更多时间。
此外,众所周知,函数调用和表访问都会造成一点开销,但短路评估可能会产生影响(我认为速度较慢,特别是考虑到我有两个以上的特定字符串,并且大多数情况下,字符串不会与其中任何一个匹配)。
那么我应该使用什么方法呢?
最佳答案
对于大型数据集,哈希表查找的性能优于函数查找。因此,采用第一种方法:
local isParticular = {
string1 = true,
string2 = true
}
print(isParticular[string1]) -- true
print(isParticular[randomString]) -- nil -> false
关于optimization - 表访问 vs 函数调用 + 条件判断 : which is faster?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38186822/