https://github.com/clojure-goes-fast/clj-async-profiler 2.0.0-beta1: embedded high-precision Clojure profiler.
At long last, I've reached a point where I can share something new and exciting with you guys. The 2.0.0 version of the profiler introduces a whole new graph type called heatgraphs. Their main difference from regular flamegraphs is that heatgraphs incorporate time as a separate dimension. Samples are no longer squashed together into a single view — there is an explicit timeline with a heatmap (hence, the name) which allows to see which periods of activity were more intensive and also to show a flamegraph in that particular time slice.
I'm behind on the introductory blogpost and a more detailed explanation, but you can try heatgraphs right now in 2.0.0-beta1 by using profile-jfr macro:
(clj-async-profiler.core/profile-jfr
(dotimes [_ 5]
(reduce *' (range 1 50000))
(Thread/sleep (+ 500 (rand-int 1000)))))
You can play with an example heatgraph https://clojure-goes-fast.com/misc/example-heatgraph.html. Make sure to expand the heatmap (upper left button), and there you can drag-and-select the time region, and the flamegraph underneath will update automatically to only include the profiling data from that time region.
There is still a long way to the final 2.0.0 - I have to make heatgraphs much smaller in size and more efficient, and unify the API for all types of supported graphs, but I'm happy to finally present my work so far to the public and see how helpful you will find it.Apart from liking the announcement I also like when a thread has as many people as there are replies, so I came to say all that and add to that number.
fantastic work, wow
that's amazing, thanks a lot @alexyakushev!
This is great! I can't wait to use this literally every day
That will be very useful 🙂
That is very cool! I mean hot! I mean amazing!
HellYeah.mp3
hehehehe