Codetrack provides a wide range of options for profiling:
Also check out this post, where the difference between sampling and tracing is explained : The rocket tale (part I): Sampling vs Tracing
In this mode, the threads of your process are being suspended periodically and a snapshot of the call stack for every thread
is taken. Use this mode to get a general idea about the performance of your code.
Since snapshots are made periodically, this method does NOT capture every method call.
This is the profiling mode that has the least impact on the performance of your process. The captured amount of data is relatively
small and is processed very quickly.
Tracing means that EVERY call will be captured and all measurements will be 100% accurate. The more options you enable, the
more information you will get, but the bigger your captured data will be and the slower your application
will run. It will result in the same performance tree as the sampling mode, but here the timings
will be exact and every call will be included. In tracing mode you also get a precise invocation
count for every method.
Tracing does not trace start and stop times for each call. It results in a virtual timeline where
calls to the same method are grouped together into one larger block. More info on virtual timelines
can be found here:
Virtual Timelines
Trace filters enable you to select the code you want to be profiled. This can be done based on:
DeepTrace is the most advanced mode. Here you can enable predefined rulesets (provided by plugins or your own library). Use
the pencil to add another ruleset just for the current session (if you're really happy with your
created ruleset, you can promote it to your library). These rulesets are very similar to trace filters.
Except that they define the methods that will have their start and stop time traced. Also arguments
can be traced for these methods. For more info on rulesets goto
Rulesets.
On top of methods, also fields can be specified to be traced when their parent type is traced as
an argument, instance or return value.
It is also possible to combine (regular) tracing with deeptrace by selecting 'Enable regular trace'.
This allows you to deeptrace just a few methods and still have all methods in your timeline. For
this default tracing you can also use the Filtering as mentioned under
Tracing.
Bear in mind that deeptracing lots of calls can have a big impact on the performance of your application!