feat(ui): added extra cache stats to the debug tab

This commit is contained in:
Folke Lemaitre 2022-12-28 17:58:16 +01:00
parent 34977c2b80
commit c2f7e2d098
No known key found for this signature in database
GPG Key ID: 41F8B1FBACAE2040
1 changed files with 40 additions and 4 deletions

View File

@ -5,6 +5,7 @@ local Handler = require("lazy.core.handler")
local Git = require("lazy.manage.git") local Git = require("lazy.manage.git")
local Plugin = require("lazy.core.plugin") local Plugin = require("lazy.core.plugin")
local ViewConfig = require("lazy.view.config") local ViewConfig = require("lazy.view.config")
local Cache = require("lazy.core.cache")
local Text = require("lazy.view.text") local Text = require("lazy.view.text")
@ -240,6 +241,13 @@ function M:diagnostic(diag)
table.insert(self._diagnostics, diag) table.insert(self._diagnostics, diag)
end end
---@param precision? number
function M:ms(nsec, precision)
precision = precision or 2
local e = math.pow(10, precision)
return math.floor(nsec / 1e6 * e + 0.5) / e .. "ms"
end
---@param reason? {[string]:string, time:number} ---@param reason? {[string]:string, time:number}
---@param opts? {time_right?:boolean} ---@param opts? {time_right?:boolean}
function M:reason(reason, opts) function M:reason(reason, opts)
@ -275,7 +283,7 @@ function M:reason(reason, opts)
reason.runtime = reason.runtime:gsub(".*/([^/]+/ftdetect/.*)", "%1") reason.runtime = reason.runtime:gsub(".*/([^/]+/ftdetect/.*)", "%1")
reason.runtime = reason.runtime:gsub(".*/(runtime/.*)", "%1") reason.runtime = reason.runtime:gsub(".*/(runtime/.*)", "%1")
end end
local time = reason.time and (" " .. math.floor(reason.time / 1e6 * 100) / 100 .. "ms") local time = reason.time and (" " .. self:ms(reason.time))
if time and not opts.time_right then if time and not opts.time_right then
self:append(time, "Bold") self:append(time, "Bold")
self:append(" ") self:append(" ")
@ -473,21 +481,29 @@ function M:details(plugin)
}) })
end end
end end
self:props(props, { indent = 6 })
self:nl()
end
---@alias LazyProps {[1]:string, [2]:string|fun(), [3]?:string}[]
---@param props LazyProps
---@param opts? {indent: number}
function M:props(props, opts)
opts = opts or {}
local width = 0 local width = 0
for _, prop in ipairs(props) do for _, prop in ipairs(props) do
width = math.max(width, #prop[1]) width = math.max(width, #prop[1])
end end
for _, prop in ipairs(props) do for _, prop in ipairs(props) do
self:append(prop[1] .. string.rep(" ", width - #prop[1] + 1), "LazyProp", { indent = 6 }) self:append(prop[1] .. string.rep(" ", width - #prop[1] + 1), "LazyProp", { indent = opts.indent or 0 })
if type(prop[2]) == "function" then if type(prop[2]) == "function" then
prop[2]() prop[2]()
else else
self:append(prop[2], prop[3] or "LazyValue") self:append(tostring(prop[2]), prop[3] or "LazyValue")
end end
self:nl() self:nl()
end end
self:nl()
end end
function M:profile() function M:profile()
@ -598,6 +614,26 @@ function M:debug()
end) end)
end) end)
self:nl() self:nl()
self:append("Cache.find()", "LazyH2"):nl()
self:props({
{ "total", Cache.stats.find.total, "Number" },
{ "time", self:ms(Cache.stats.find.time, 3), "Bold" },
{ "avg time", self:ms(Cache.stats.find.time / Cache.stats.find.total, 3), "Bold" },
{ "index", Cache.stats.find.index, "Number" },
{ "fs_stat", Cache.stats.find.stat, "Number" },
{ "not found", Cache.stats.find.not_found, "Number" },
}, { indent = 2 })
self:nl()
self:append("Cache.autoload()", "LazyH2"):nl()
self:props({
{ "total", Cache.stats.autoload.total, "Number" },
{ "time", self:ms(Cache.stats.autoload.time, 3), "Bold" },
{ "avg time", self:ms(Cache.stats.autoload.time / Cache.stats.autoload.total, 3), "Bold" },
}, { indent = 2 })
self:nl()
self:append("Cache", "LazyH2"):nl() self:append("Cache", "LazyH2"):nl()
local Cache = require("lazy.core.cache") local Cache = require("lazy.core.cache")
Util.foreach(Cache.cache, function(modname, entry) Util.foreach(Cache.cache, function(modname, entry)