Nazgool 250 Опубликовано 7 Января 2015 (изменено) @Dennis_Chikin, А почему for i, v in ipairs ? for i = start, end, step do раза в два быстрее. Ну на одну строку больше будет ? Изменено 7 Января 2015 пользователем Nazgool Поделиться этим сообщением Ссылка на сообщение
Nazgool 250 Опубликовано 7 Января 2015 (изменено) @Dennis_Chikin, Да при чем тут наносекунды? for i = ... специально придуман для обхода правильных массивов. Оператор ... как раз и создаёт такой массив. Если что, на первой же "дырке" цикл прекратиться (в оригинале это сделано через if (arg ~= nil) ... break). Кстати pairs не годится для этой функции. Он читает всё, т.е. и nil-ы. @Desertir, Ага. Я использую быстрые таймеры (быстрые - это в смысле без анализа множества результатов, вычисления среднестатистического значения и прочей ерунды) local function call_timer(tab, name) local timer = {timer = profile_timer(), name = name or ''} function timer:start() self.timer:start() return self end function timer:stop(msg) self.timer:stop() self:print(msg) return self end function timer:point(name) self:stop("POINT '"..(name or '').."'"):start() end function timer:print(msg) print("TIMER '"..self.name.."' > "..(msg or 'STOP')..' > TIME = '..self.timer:time()) end return timer end debug.timer = setmetatable({}, {__call = call_timer}) Тут у меня подключена Lua by RvP, но это не обязательно. Функция print тоже переписана. И использую local t1 = debug.timer('timer_1'):start() ... t1:point('1') -- если нужно ... t1:point('N') -- если нужно ... t1:stop() -- тут в лог пишется Изменено 7 Января 2015 пользователем Nazgool 1 Поделиться этим сообщением Ссылка на сообщение