Sometimes you want to measure the performance impact of a change. You'll usually get a profile from before the change and a profile from after the change, and then you want some way of comparing the two.
At the moment, the only way of doing that is to load the profiles in two different tabs and to repeatedly switch between the two. That's not a great experience.
It would be nice to be able to select two profiles to compare, maybe pick one thread from each of them, and then have a few ways of comparing them:
- Difference tree: Let's say the profiling interval is 1ms. In the regular call tree, in order to compute the time for a call tree node, you just sum up all the samples under that call stack, and then you sort by that number, and the callstacks with the highest number show up at the top. In a difference tree, you could count all samples from the new profile as 1ms and all the samples from the old profile as -1ms. Then you still do the same summing of numbers in the call tree, and you end up with call tree nodes that can have negative or positive costs. Call tree nodes with positive numbers are call stacks which are present in the new profile more than in the old profile (i.e. the parts that got slower), and they'll be sorted to show up at the top.
- Matching up timelines: Sometimes it's nice to compare the information represented in the timeline views at the top with each other visually, both the stack graph and the interval markers. So you'd want some way of moving the time lines of the two threads underneath each other until they match up somehow.
- Comparing information contained in markers: If I have a change that affects composite times, I'd like to have some way of comparing the composite markers on the Compositor threads of the two profiles. E.g. compare the average time of a composite taken before and after.
Comparing profiles is a big subject and we'll probably need to experiment with a bunch of different views until we find something that works.
┆Issue is synchronized with this Jira Task
Sometimes you want to measure the performance impact of a change. You'll usually get a profile from before the change and a profile from after the change, and then you want some way of comparing the two.
At the moment, the only way of doing that is to load the profiles in two different tabs and to repeatedly switch between the two. That's not a great experience.
It would be nice to be able to select two profiles to compare, maybe pick one thread from each of them, and then have a few ways of comparing them:
Comparing profiles is a big subject and we'll probably need to experiment with a bunch of different views until we find something that works.
┆Issue is synchronized with this Jira Task