I have a few larger methods I'm trying to optimize in Java. I have been using jVisualVM to do most of my profiling as it gives method call hot spots and is a great starting point.
What I am looking for is a line-by-line hot spot profiler which can help me narrow down whats taking so long. The ovbious work around which I have used in the past is just strategically placed System.currentTimeMillis() prints and in more extreme cases using Java CPUTime (done via JNI). There are a few profilers like Intel Parallel Amplifier which works with C & Visual Studio, but is there anything like this for Java?
Both of those options are a bit tedious, so is there anything (Eclipse plug-in or otherwise) which can do line-by-line hot spot analysis?
JProfiler has line number resolution. It's not enabled by default, but if you edit the profiling settings, there's a check box named "Record line numbers and show them in the call tree" on the "Method call recording" tab:

Disclaimer: My company develops JProfiler.
In dynaTrace you can do something similar by instrumenting all invoked methods, however it is a commercial tool. Alternatively, you could write your own instrumenting tool using for example ASM (but it is extremely tedious :( )
来源:https://stackoverflow.com/questions/9288787/java-line-by-line-method-function-profiling-profiler-or-eclipse-plugin