Перейти к содержанию
  • записи
    104
  • комментариев
    125
  • просмотров
    15 687

Оптимизация CE Lua кода по сборке мусора


MasterGH

1 096 просмотров

Есть инструкции, которые добавляют мусора больше чем другие.
 

Показываем объем памяти мусора

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 Комментариев


Рекомендуемые комментарии

Комментариев нет

Пожалуйста, войдите, чтобы комментировать

Вы сможете оставить комментарий после входа в



Войти
×
×
  • Создать...

Важная информация

Находясь на нашем сайте, Вы автоматически соглашаетесь соблюдать наши Условия использования.