Функция Lua collectgarbage
со строкой "count"
в качестве аргумента возвращает число, которое отражает объем памяти, используемый в данный момент интерпретатором. Вот ссылка на пример и дополнительную информацию; Я воспроизведу пример здесь:
function memuse()
local i = math.modf(collectgarbage("count") * 1024)
return i
end
Эта функция возвращает объем памяти в килобайтах, используемый в настоящее время Lua.
Что касается времени, самый простой способ - это вызов os.time()
, который возвращает текущее системное время. Обратите внимание, что это только возвращает количество секунд до ближайшего целого числа. Если вам нужна более высокая точность, есть несколько вариантов: во-первых, сделать системный вызов с io.popen
, чтобы получить текущее системное время, которое включает нецелую часть; или два, реализуйте некоторые связанные с временем функции в C / C ++ и вызывайте их из Lua. Я использовал оба варианта, и второй дает превосходную точность, но для простоты я просто покажу первый.
-- Function called 'tick' to retrieve the current OS time.
function tick()
local fil = assert(io.popen("date +%s.%N"))
local str = fil:read("*all")
return tonumber(str)
end
Lua файловые дескрипторы - один из которых производится вызов io.popen
- иметь свои собственные деструкторы, поэтому их не нужно явно закрывать; однако вы можете захотеть вызвать fil:close()
для сбора мусора и избежания любых ошибок, связанных с открытым файлом.
Если вы хотите воспользоваться вторым, более сложным вариантом, я предлагаю создать класс таймера в C ++, который использует библиотеку chrono
для получения системного времени.
Я не уверен, что эти две функции имеют отношение к вам, но я надеюсь, что они помогут.