paint_down_to_common() is used by many Git commands, and sometimes multiple times in a single call. It is important to measure performance of this method, but the actual time it takes can vary due to interactions outside Git's control (file system, CPU contention, etc.). Instead, count how many times we execute the while loop, which is consistent between runs. Signed-off-by: Derrick Stolee <dstolee@xxxxxxxxxxxxx> --- commit-reach.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/commit-reach.c b/commit-reach.c index 86715c103c..ee374dce20 100644 --- a/commit-reach.c +++ b/commit-reach.c @@ -38,6 +38,9 @@ static struct commit_list *paint_down_to_common(struct commit *one, int n, struct commit_list *result = NULL; int i; uint32_t last_gen = GENERATION_NUMBER_INFINITY; + uint32_t num_walked = 0; + + trace2_region_enter("paint_down_to_common"); one->object.flags |= PARENT1; if (!n) { @@ -55,6 +58,7 @@ static struct commit_list *paint_down_to_common(struct commit *one, int n, struct commit *commit = prio_queue_get(&queue); struct commit_list *parents; int flags; + num_walked++; if (commit->generation > last_gen) BUG("bad generation skip %8x > %8x at %s", @@ -88,6 +92,10 @@ static struct commit_list *paint_down_to_common(struct commit *one, int n, } clear_prio_queue(&queue); + + trace2_data_intmax("paint_down_to_common", "num_walked", num_walked); + trace2_region_leave("paint_down_to_common"); + return result; } -- 2.19.0.rc2