I was using the plenary.profile package and capturing profiles using it. It looks like it's super useful for my case. I was using the flamegraph output to get some nice profiler to visualize in the Firefox Profiler. But the profiles that I gathered weren't so useful.
For example here's one: https://share.firefox.dev/4ejyKHG
It wasn't very useful to me because it wasn't possible to see which file or function comes from which module exactly.
But after looking at the documentation of jit.p, I realized that it's possible to send different options that might make it more useful for me.
For example, here I see that I can also pass p and F that could make the output more useful for me:
|
-- The following dump features are available: |
|
-- |
|
-- f Stack dump: function name, otherwise module:line. Default mode. |
|
-- F Stack dump: ditto, but always prepend module. |
|
-- l Stack dump: module:line. |
|
-- <number> stack dump depth (callee < caller). Default: 1. |
|
-- -<number> Inverse stack dump depth (caller > callee). |
|
-- s Split stack dump after first stack level. Implies abs(depth) >= 2. |
|
-- p Show full path for module names. |
|
-- v Show VM states. Can be combined with stack dumps, e.g. vf or fv. |
|
-- z Show zones. Can be combined with stack dumps, e.g. zf or fz. |
|
-- r Show raw sample counts. Default: show percentages. |
|
-- a Annotate excerpts from source code files. |
|
-- A Annotate complete source code files. |
|
-- G Produce raw output suitable for graphical tools (e.g. flame graphs). |
|
-- m<number> Minimum sample percentage to be shown. Default: 3. |
|
-- i<number> Sampling interval in milliseconds. Default: 10. |
But currently there is no way to pass additional popts or override the default ones:
|
function profile.start(out, opts) |
|
out = out or "profile.log" |
|
opts = opts or {} |
|
local popts = "10,i1,s,m0" |
|
if opts.flame then popts = popts .. ",G" end |
|
p.start(popts, out) |
|
end |
It's not the end of the worlds since I can still manually add these arguments or call jit.p directly. But it would be nicer if plenary had an option to do it too.
Here's the output with these:
https://share.firefox.dev/460Xsdw
Now it's a lot more actionable for me, since I can see which file comes from which package exactly.
So my feature request would be to make this profiler.start API accept pargs as an argument so users can override them.
I was using the
plenary.profilepackage and capturing profiles using it. It looks like it's super useful for my case. I was using the flamegraph output to get some nice profiler to visualize in the Firefox Profiler. But the profiles that I gathered weren't so useful.For example here's one: https://share.firefox.dev/4ejyKHG
It wasn't very useful to me because it wasn't possible to see which file or function comes from which module exactly.
But after looking at the documentation of
jit.p, I realized that it's possible to send different options that might make it more useful for me.For example, here I see that I can also pass
pandFthat could make the output more useful for me:plenary.nvim/lua/plenary/profile/p.lua
Lines 22 to 38 in 857c5ac
But currently there is no way to pass additional
poptsor override the default ones:plenary.nvim/lua/plenary/profile.lua
Lines 12 to 18 in 857c5ac
It's not the end of the worlds since I can still manually add these arguments or call
jit.pdirectly. But it would be nicer if plenary had an option to do it too.Here's the output with these:
https://share.firefox.dev/460Xsdw
Now it's a lot more actionable for me, since I can see which file comes from which package exactly.
So my feature request would be to make this
profiler.startAPI acceptpargsas an argument so users can override them.