Установка последнего элемента на nil
не будет вызовом функции. Таким образом, это, безусловно, будет быстрее, чем table.remove
. Насколько это важно, зависит от вас.
Под словом «так же, как» я подразумеваю, уменьшается ли внутреннее хранилище массива с помощью присваивания nil? Кажется, я нигде не могу найти это документально.
Это не задокументировано; это позволяет реализации измениться. Все, что обещает Lua, это то, что установка его на nil
уменьшит размер, возвращаемый последующими вызовами, до #p
. Все, кроме этого, зависит от Lua и может быть изменено без предупреждения. На это не стоит полагаться.
Однако я бы с уважением предположил, что если вы думаете об этих видах микрооптимизации, вам, вероятно, не следует использовать язык сценариев. Язык сценариев должен использоваться для кода, где производительность не настолько важна, чтобы тратить на нее много.