I'm seeing some CPU profiling results that I don't quite understand.
I see
A.a 79%
B.b 25%
So now I'm wondering where the other 54% went. I read in another post that this can be due to A.a consuming CPU time itself, however if I check the implementation of this method it simply calls a method on a different object of a different class. In fact this method call is in fact between A.a and B.b. Any idea why this is missing?
The CPU snapshot was made using method tracing btw.
[EAP 606] Weird time values
-
- Posts: 21
- Joined: Tue May 17, 2005 1:38 pm
-
- Posts: 1624
- Joined: Tue Aug 10, 2004 7:52 pm
Sorry, but I do not understand your call tree. Please send your call tree (exported to HTML) with description of the problem to [email protected]
-
- Posts: 21
- Joined: Tue May 17, 2005 1:38 pm
If I understand correctly this is due to the combination of JVMPI not supporting byte code manipulation and the dynamic byte code manipulation performed by yourkit. Or does the JVMPI also not fire method entered/exit events in case of inlined methods?
If my assumption is correct, doesn't this severly limit the accuracy of the profiler. I realize this is for performance reasons, but to me accurate results are more important than raw speed...
If my assumption is correct, doesn't this severly limit the accuracy of the profiler. I realize this is for performance reasons, but to me accurate results are more important than raw speed...
-
- Posts: 6172
- Joined: Wed Aug 11, 2004 8:37 am
-
- Posts: 6172
- Joined: Wed Aug 11, 2004 8:37 am
Yes, -Xint should solve this particular problem. But it will raise another problem - profiled application will run much slower.
If it's suitable for you, I'd suggest to profile with Java 5.0. Performance optimizations made based on profiling results collected running application with Java 5.0 will most likely be adequate for production system running Java 1.4 or 1.3, because most of bottlenecks are induced by own code of application, not by JDK it runs under.
-Xint produces correct stack traces, but times can be very different from real times (i.e. when HotSpot JVM is on). I wouldn't suggest to rely much on times produced with -Xint
If it's suitable for you, I'd suggest to profile with Java 5.0. Performance optimizations made based on profiling results collected running application with Java 5.0 will most likely be adequate for production system running Java 1.4 or 1.3, because most of bottlenecks are induced by own code of application, not by JDK it runs under.
-Xint produces correct stack traces, but times can be very different from real times (i.e. when HotSpot JVM is on). I wouldn't suggest to rely much on times produced with -Xint
-
- Posts: 21
- Joined: Tue May 17, 2005 1:38 pm