Julia performance is often quite opaque, and it is hard to tell where time is being spent. I think it is time we need a basic profiler. Marking this as 2.0, unless there is something minimal and possible in the 1.0 timeframe.
I note that LLVM has an llvm-prof command, which might be useful as a starting point.
I'm not sure about llvm-prof, but the LLVM tools tend to be designed for compiled code and since we JIT instead, they're usually not that helpful. Will check it out though.
the matlab profiler is the only thing that keeps me from using octave instead (well, my company buys the license, too). a good profiler is, IMO, essential for scientific computing.
Matlab's profiler is really, really awesome. One of the best I've encountered — largely because it's so incredibly easy to use. We really do need something in this arena, but I'm not sure what the best approach is. Can we just instrument the entry and exit from every function call and then build a profile from that? Or will that measurement itself affect performance too much?
Profilers exist on a spectrum.
Profilers that insert instrumentation code are good at providing very fine-grained profiling, but at the cost of speed.
Sampling profilers simply take periodic copies of the stack, which is low-overhead, but requires more time to build up a good profile.
I would suggest building on top of one of the existing open-source tools:
Closing this one since we already have the basic profiler by @timholy