특정 문자열이 미리 결정된 문자열 집합 중 하나인지 확인해야합니다.테이블 액세스 대 함수 호출 + 조건부 결정 : 어느 쪽이 빠릅니까?
내 마음에 와서 할 수있는 두 가지 방법 : 테이블을 설정하면 특정 값
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 개 이상의 특정 문자열이 있다고 생각합니다. 대부분의 경우 문자열이 그 중 어느 것과도 일치하지 않을 것입니다).
그래서 어떤 방법을 사용해야합니까?
확실한 한 가지 방법이 있습니다. 둘 다 프로필하십시오! 하지만 차이점을 알 수 있을지는 의문입니다. 체인 연결을 사용하고 싶다면 확인해야 할 항목이 너무 많아서 확장에 대해 걱정할 필요가 없습니다. –