I’ve recently completed a major rewrite of ProfileView.jl, a package for visualizing profiling data as a tool for understanding performance bottlenecks. ProfileView was written back in the Julia 0.1 days (yes, back in 2013) and it was long overdue for a facelift.
Several changes should be visible to users:
- Support for Jupyter/IJulia and writing SVGs has moved to the ProfileSVG package. It should be noted that this package is looking for a maintainer who actually knows something about SVG.
- ProfileView will now use one bar per source location. Formerly a whole stack of inlined calls got scrunched together into a single bar; as Julia’s inilining has gotten more aggressive, this was starting to cause serious usability problems. Now these calls have been virtually “de-inlined” and treated separately, allowing you to right-click on bars and be taken to the source location in your editor.
- There are now extensive user-customizable coloration schemes thanks to the new FlameGraphs package. For example, you can color bars according to their module-of-origin.
- The API has changed slightly, and there is much more extensive documentation of all the supporting infrastructure.
The code should also be much cleaner and easier to work with; for people who want more from their profiling, now is a good time to jump in with contributions. It should also be noted that FlameGraphs.jl (which is where most of the “heavy lifting” is done) is deliberately GUI-agnostic, and in principle can be leveraged by other front-ends.
All this goodness is available as ProfileView 0.6.0 and growing family of support packages.