Lua / Coroutines如何测量标准内存占用的内存量

问题描述 投票:0回答:1

我目前正在尝试找到一种方法来返回一个静态值,该值表示一个函数需要多少内存标准时间或它的执行时间(作为静态线程),我曾考虑过使用协程,但是我无法进行任何工作原型,谢谢您的帮助! (:

memory memory-management lua stack coroutine
1个回答
0
投票
以字符串collectgarbage作为参数的Lua函数"count"返回一个数字,该数字反映了解释器当前正在使用的内存量。这是示例link和更多信息;我将在此处重现示例:

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库来检索系统时间。

我不确定这两个功能与您是否相关,但希望它们能对您有所帮助。

© www.soinside.com 2019 - 2024. All rights reserved.