summaryrefslogtreecommitdiff
path: root/xmake/core/base/memory.lua
diff options
context:
space:
mode:
authorruki <[email protected]>2022-07-28 00:49:29 +0800
committerruki <[email protected]>2022-07-28 00:49:29 +0800
commitd0adfab467cb037947e04517063cf2c650c57e36 (patch)
treea8dfb235d0f8e5ebd5813194debd92b7944c323c /xmake/core/base/memory.lua
parentcbde43760f32030de7cf46c32a76421d86529271 (diff)
cache meminfo
Diffstat (limited to 'xmake/core/base/memory.lua')
-rw-r--r--xmake/core/base/memory.lua15
1 files changed, 10 insertions, 5 deletions
diff --git a/xmake/core/base/memory.lua b/xmake/core/base/memory.lua
index 53b6fe65e..3bd00813d 100644
--- a/xmake/core/base/memory.lua
+++ b/xmake/core/base/memory.lua
@@ -22,14 +22,19 @@
local memory = memory or {}
-- load modules
-local os = require("base/os")
+local os = require("base/os")
-- get memory info
function memory.info(name)
- -- TODO we need cache per 10s
- local meminfo = os._meminfo()
- if meminfo.totalsize and meminfo.availsize then
- meminfo.usagerate = (meminfo.totalsize - meminfo.availsize) / meminfo.totalsize
+ local meminfo = memory._MEMINFO
+ local memtime = memory._MEMTIME
+ if meminfo == nil or memtime == nil or os.time() - memtime > 10 then -- cache 10s
+ meminfo = os._meminfo()
+ if meminfo.totalsize and meminfo.availsize then
+ meminfo.usagerate = (meminfo.totalsize - meminfo.availsize) / meminfo.totalsize
+ end
+ memory._MEMINFO = meminfo
+ memory._MEMTIME = os.time()
end
return name and meminfo[name] or meminfo
end