Если эту функцию или обвязку вокруг будет кто-то дорабатывать, то легко прийти к ситуации, в которой гонка случится. Можно попытаться закрыться луа-мьютексом, но тогда из-за gc вы потеряете выигранный перф.
В целом, я бы предложил использовать require "table.new"
-- он позволяет аллоцировать сразу необходимое количество слотов в таблице, чтобы избежать реаллокаций, и, возможно, если очень-очень нужно, пул таблиц, которые очищаются при возврате в пул.
Плюс к этому, дополнительно обложиться замерами таймингов выполнения, что оптимизация реально что-то дает