If I profile my app's CPU usage, take a snapshot, and look at the hotspots it
displays based on time spent "in" a method. This has some applications, but it
doesn't really tell me where the CPU time is going. I would find it more useful
to have a filter:
a) All time
b) CPU time
c) Wait time
Personally I would find b) most useful, but I can see use cases for c) and if
you're doing the one it's not much more work to do the other.
Example use case: a server with one thread which blocks on Socket.accept and a
pool of others to process the connected sockets. If the pool size is 4 then the
hotspot list will show 20% of time in Socket.accept, which isn't very helpful.
On the other hand it's necessary to aggregate the data from the pooled threads
to see where your CPU time is going.