I still think we should find a way to integrate the two somehow - i.e. analyze locally and then send the pre-analyzed data for visualization purposes to the remote firefox profiler. Does anyone know a good format we could use for that purpose? It needs to be non-verbose to not hit the infamous 2GB/4GB JSON heap size limitation on import e.g. Similarly, we also need something that can deal with the various cost types we support in hotspot, most notably off-CPU time.
I primarily do macOS development work and use Instruments for profiling, but have been working on Linux a lot lately and Hotspot has been pulled out a lot over the last few weeks. Highly recommended.
Great tool that has been really helpful in helping me find unexpected bottlenecks in the codebases I've been working on.
It's easy to use, and pairs beautifully with the unintrusive perf tool, which makes the combination a joy to use.
And, if combined with a codebase opened in QtCreator, you can click on a hotspot in the flamegraph, and it will bring you automagically to the correct file and line in QtCreator, without any explicit linking required between the two programs. I discovered that feature accidentally, and the fact that it just worked seamlessly really impressed me. (Tested on a Debian-based Linux).
A big thanks to KDAB for making this tool available to us!
And to people using other IDE/editors - you can configure which one gets opened when you click on a source line from the hotspot settings. QtCreator is just the default (when that is installed).
It's a pity, Hotspot is abandoned in Debian. Just because of policykit [1]. The package seems to be rather easy to maintain (it has a tiny rule file, small control and only 2 patches).
I'm on FreeBSD, so its a lot of overhead to check myself: But, does this have a source view like Vtune, that can attribute cycles / cache misses / etc, to a line of code? I see it has an assembly view..
Fun fact: firefox also supports loading 'perf' reports: https://profiler.firefox.com/
useful for small profiles, but it blows up on larger ones. hotspot handles multi-gigabytes recordings fine on the same hardware.
I still think we should find a way to integrate the two somehow - i.e. analyze locally and then send the pre-analyzed data for visualization purposes to the remote firefox profiler. Does anyone know a good format we could use for that purpose? It needs to be non-verbose to not hit the infamous 2GB/4GB JSON heap size limitation on import e.g. Similarly, we also need something that can deal with the various cost types we support in hotspot, most notably off-CPU time.
samply [0] does something to send data to Firefox Profiler that I've had better results with compared to the regular import.
[0]: https://github.com/mstange/samply
From the same author, Heaptrack to investigate memory usage is also very helpful: https://invent.kde.org/sdk/heaptrack/
I just assumed they used the same gui toolkit. Awesome to hear they're from the same author.
(The toolkit is Qt.)
I primarily do macOS development work and use Instruments for profiling, but have been working on Linux a lot lately and Hotspot has been pulled out a lot over the last few weeks. Highly recommended.
Great tool that has been really helpful in helping me find unexpected bottlenecks in the codebases I've been working on.
It's easy to use, and pairs beautifully with the unintrusive perf tool, which makes the combination a joy to use.
And, if combined with a codebase opened in QtCreator, you can click on a hotspot in the flamegraph, and it will bring you automagically to the correct file and line in QtCreator, without any explicit linking required between the two programs. I discovered that feature accidentally, and the fact that it just worked seamlessly really impressed me. (Tested on a Debian-based Linux).
A big thanks to KDAB for making this tool available to us!
You are welcome :)
And to people using other IDE/editors - you can configure which one gets opened when you click on a source line from the hotspot settings. QtCreator is just the default (when that is installed).
It's a pity, Hotspot is abandoned in Debian. Just because of policykit [1]. The package seems to be rather easy to maintain (it has a tiny rule file, small control and only 2 patches).
[1] https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1025573
And, of course, a big thanks to you for writing this tool! :-)
I couldn't figure out how to use hotspot. I used speedscope instead: https://www.speedscope.app/
Maybe I should check out hotspot again.
I'm on FreeBSD, so its a lot of overhead to check myself: But, does this have a source view like Vtune, that can attribute cycles / cache misses / etc, to a line of code? I see it has an assembly view..
This is a fantastic tool and I recommend it! I use it every day to recursively solve bottlenecks in our code base.
Wonderful tool. Has been incredibly useful in optimising LibreOffice.
Nice tool, thanks for the heads up.