Мне нужно проверить, является ли конкретная строка одним из множества заданных строк.Доступ к таблице и вызов функции + условное определение: что быстрее?
два способа сделать это пришло мне на ум: создание таблицы для возврата истинна на определенном значении
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
.
Кроме того, как вызов функции, так и доступ к таблице известны тем, что вызывают небольшую накладную нагрузку, но, возможно, оценка короткого замыкания может иметь значение (в более медленном режиме, я думаю, особенно считается, что у меня есть более двух конкретных строк и что в большинстве случаев строка не будет соответствовать ни одному из них).
Какой метод следует использовать?
Существует только один способ: профиль как! Я сомневаюсь, что вы увидите разницу: если вы планируете использовать цепочку «или», это говорит мне, что у вас нет слишком много предметов, которые вам нужно проверить, поэтому не нужно беспокоиться о масштабировании. –