Оптимизация CE Lua кода по сборке мусора
Есть инструкции, которые добавляют мусора больше чем другие.
Показываем объем памяти мусора
print(string.format('Lua memory usage %.1f MiB',collectgarbage('count')/1024))
Ниже код того как попробовать узнать сколько мусора добавил код при парсинге ассемблерной строки двумя способами
Спойлер
local s = " 0045464A - FF 05 A4B54500 - inc [0045B5A4] { [000003EA] }"
function GetDebugString(address)
return splitDisassembledString(s)
end
-- address, bytes, opcode
function GetDebugString2(address)
local clearString = string.gsub(s, '%s','')
return string.match(clearString, '^(.-)%-(.-)%-(.-)$')
end
function NoOptimizeCode()
GetDebugString2()
end
function OptimizeCode()
GetDebugString()
end
local countRepeat = 500000 -- add more cycle
local x1 = 0
local x2 = 0
x1 = getTickCount()
print(string.format('Lua memory usage %.1f MiB',collectgarbage('count')/1024))
for i = 1, countRepeat do NoOptimizeCode() end
print(string.format('Lua memory usage %.1f MiB',collectgarbage('count')/1024))
x2 = getTickCount()
for i = 1, countRepeat do OptimizeCode() end
print(string.format('Lua memory usage %.1f MiB',collectgarbage('count')/1024))
print(string.format("%.2f", (x2 - x1)/(getTickCount() - x2)) )
Пример результатов могут отличаться. Фиг его знает почему. Возможно работает сборщик мусора в разные моменты времени
Lua memory usage 1.8 MiB
Lua memory usage 1.8 MiB
Lua memory usage 1.8 MiB
1.49
Lua memory usage 1.8 MiB
Lua memory usage 2.3 MiB
Lua memory usage 2.3 MiB
1.47
Lua memory usage 2.3 MiB
Lua memory usage 2.8 MiB
Lua memory usage 2.8 MiB
1.49
-
1
0 Комментариев
Рекомендуемые комментарии
Комментариев нет
Пожалуйста, войдите, чтобы комментировать
Вы сможете оставить комментарий после входа в
Войти