When you don't select Deeptrace rulesets, CodeTrack will still provide a timeline in the output. The difference is that this
is a virtual timeline. It is constructed based on the sampled stacks.
You can recognize the virtual timeline by the orange color scheme and by the warning in the top right corner. It is important
to know that a timeline is virtual because it has a few consequences you need to take in account when analyzing your data.
There is a slight but important difference between tracing and sampling mode, so I'll explain them seperately.
Sampling means that the profiler will periodically freeze all managed threads and during each freeze a stack snapshot is
taken for each thread and stored with a timestamp.
When constructing the timeline, the only thing we know for sure is which methods were active at the moment of the
snapshot. All of these snapshots are put next to each other and if a method is the same as in the previous snapshot,
it is glued to the previous one.
This has some important consequences you need to keep in mind while looking at your virtual timeline:
Tracing works similar compared to sampling, but every time a method starts or ends, the count is updated and the duration
is stored. Every time a method event occurs and 100ms has passed, a snapshot is stored with a timestamp. As a consequence,
this snapshot contains all methods called during this timeframe, their count and their total duration.
While more accurate than sampling, this still has some important consequences you need to keep in mind while looking
at your virtual timeline:
As you can read in Profiling modes, it is possible to combine Deeptrace mode with regular tracing. In that case, the resulting timeline will contain virtual items (tracing) combined with real items (Deeptracing) of which the exact start and stop time is known.
If the virtual timeline is not exact, then why is it provided anyway?
First of all, it gives you an idea of what is going on during the lifetime of your application. Next to giving you information
about the total performance of your method calls, you can now also get a rough idea about the chronological order and
also see if at particular moments in time methods tend to take longer.
Another, more important, reason is that this virtual timeline facilitates the rescope feature (more info
here). Based on the virtual timeline you can specify ranges to rescope all the other views, so you can for instance
compare 2 separate moments in time.