This is an advanced topic. It provides additional details that you do not normally have to know to profile your applications.
There are two ways to measure time:
- CPU time - the time actually spent by CPU executing method code
- Wall time - the real-world time elapsed between method entry and method exit. If there are other threads/processes concurrently running on the system, they can affect the results.
CPU sampling/tracing
CPU sampling and tracing measure:
- Wall time: For methods that rarely consume a lot of CPU directly; instead they perform network calls, involve OS background activity or delegate to other applications such as database engines. By default, basic file and socket I/O operations are included. See section 'Customization' below to learn how to change this.
- CPU time: for all other methods
Customization
To customize for which methods the wall time is measured, use "Settings | Wall Time Methods...":
The settings are applied each time you start CPU tracing or sampling. This means you can change the settings without restarting the profiled application.
Each line should be in this format:
<fully qualified class name> : <method name> ( <comma-separated parameter types> )
Wildcards ('*') are accepted. E.g. the following specifies all methods of class com.Foo.Bar, which names start with 'print':
com.Foo.Bar : print*(*)
Default configuration is:
System.Net.Sockets.Socket : *(*)
System.IO.FileStream : *(*)
To measure CPU time for all methods, the settings should be empty.
