Перейти к контенту

Рефакторинг


Рекомендуемые сообщения

@Dennis_Chikin

А почему for i, v in ipairs ?

for i = start, end, step do раза в два быстрее.

Ну на одну строку больше будет ?

Изменено пользователем Nazgool

Поделиться этим сообщением


Ссылка на сообщение
Да при чем тут наносекунды?
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() -- тут в лог пишется
Изменено пользователем Nazgool
  • Нравится 1

Поделиться этим сообщением


Ссылка на сообщение
  • Недавно просматривали   0 пользователей

    • Ни один зарегистрированный пользователь не просматривает эту страницу.
×
×
  • Создать...