Lua. Сравнение времени выполнения двух функций
function NoOptimizeCode()
--[[Предположительно не оптимизированный код]]--
end
function OptimizeCode()
--[[Предположительно оптимизированный код]]--
end
local countRepeat = 10000000
local x1 = 0
local x2 = 0
x1 = os.clock()
for i = 1, countRepeat do NoOptimizeCode() end
x2 = os.clock()
for i = 1, countRepeat do OptimizeCode() end
local deltaTimeOptimize = (os.clock() - x2)
local deltaTimeNoOptimize = (x2 - x1)
print(string.format("%.2f\n", deltaTimeNoOptimize/deltaTimeOptimize))
Пример1. Узнать во сколько раз string.match() медленее string.find()
function NoOptimize()
if string.match('mov eax, [edx]', 'edx') then
end
end
function Optimize()
if string.find('mov eax, [edx]', 'edx') then
end
end
Пример2. Создание лишней локальной переменной
local tableA = {'A', 'B', 'C'}
function NoOptimize()
local t = #tableA
for i = 1, t do
end
end
function Optimize()
for i = 1, #tableA do
end
end
Ответы: 1.38, 1.04.
Если значение меньше единицы, то оптимизированный код хуже.
Если значение больше единицы, то стоит использовать более оптимизированный вариант.
Для простого поиска лучше использовать string.find чем string.match.
Еще несколько примеров
tableA = {'A', 'B', 'C'}
local tableB = {'A', 'B', 'C'}
function NoOptimize()
for i = 1, #tableA do
end
end
function Optimize()
for i = 1, #tableB do
end
end
1.14
К локальной таблице доступ быстрее
function NoOptimize()
tableA = {'A', 'B', 'C'}
end
function Optimize()
local tableB = {'A', 'B', 'C'}
end
Создание новой глобальной и новой локальной таблицы.
1.08
Для чего может пригодиться. Может пригодиться при оптимизации кода трассировке на брейкпоинтах в пошаговой отладке
0 Комментариев
Рекомендуемые комментарии
Комментариев нет
Пожалуйста, войдите, чтобы комментировать
Вы сможете оставить комментарий после входа в
Войти