Должен ли я использовать ipairs или для цикла - PullRequest
15 голосов
/ 21 января 2012

Я прочитал, что использование ipairs происходит медленнее, чем цикл for. Должен ли я изменить свою привычку программирования?Однажды я буду использовать lua 5.2, в настоящее время 5.1.

Мои массивы - максимум 1000 элементов.

local mytbl = { 'a','b','c','e'}
for i,v in ipairs(mytbl) do
  print(i,v)
end

for i=1,#mytbl do
  print(i,mytbl[i])
end

1 Ответ

27 голосов
/ 21 января 2012

http://springrts.com/wiki/Lua_Performance#TEST_9:_for-loops

pairs: 3.078 (217%)
ipairs: 3.344 (236%)
for i=1,x do: 1.422 (100%)
for i=1,#atable do 1.422 (100%)
for i=1,atable_length do: 1.562 (110%)

Обратите внимание, однако, что использование числового цикла for работает, только если вы перебираете таблицы с последовательными числовыми индексами - если вы используете хеш-ключитаблицы или разреженные таблицы, тогда вам нужно будет использовать некоторую форму pairs().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...