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