Палец вверх 15
Перевод
Перевод

Должен ли я использовать ipairs или для цикла

Я читал, что использование 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
lua
задан topskip 21 янв. 2012 г., 21:36:08
источник

1 ответ

Решение 27
Перевод
Перевод

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() .

ответ дан Amber 21 янв. 2012 г., 21:41:02
источник