I’ve managed to install tracy, build it from source, and have the tracy GUI up.
Then I’m compiling the roc binary with:
zig build roc -Dtracy=/Users/piz/git/wolfpld/tracy -Dtracy-callstack=true
And then when I’m running the roc program, it seems to connect to the tracy server. And then I have the following catpure.
It basically says that all the time is spent inside rocRun. If I want to get more fine-grained insight, what should I do?
Weird. I wonder why it didn't expand all the zones for you. (zooming out may fix?)
Do you have any ability to drag down and expand the main thread zone to see more?
Also, if you sort by self time in that zone info panel, you probably still would get a solid sense of where is best to look at. Though it is possible that we don't yet have tracing for whichever functions are slow in this case.
Generally, I use roc build and then run the app separately so that compilation time and run time are separate traces
I don’t think I have access to any more details. Though when I added manually the two lines at the top of rocRun to the top of runWithPosixFdInheritance, I see it in the details.
image.png
But you are probably right, I might need to split into build an executable then run that
What really odd is that clearly it is recording more data
Otherwise it wouldn't know all of those sell times below
I'm guess we don't have coverage for whatever is eating all the time
Is this from your append benchmark?
Got more by running the binary directly :)
image.png
Thx
I wrote a bit about what I tried here. Might continue on it in the coming days, but feel free to steal anything interesting in there to incorporate in other perf PRs.
https://github.com/roc-lang/roc/pull/8687
Last updated: Dec 21 2025 at 12:15 UTC