]> git.ipfire.org Git - thirdparty/git.git/commitdiff
unpack-trees: add trace2 regions
authorDerrick Stolee <dstolee@microsoft.com>
Mon, 4 Jan 2021 03:09:11 +0000 (03:09 +0000)
committerJunio C Hamano <gitster@pobox.com>
Mon, 4 Jan 2021 23:23:08 +0000 (15:23 -0800)
The unpack_trees() method is quite complicated and its performance can
change dramatically depending on how it is used. We already have some
performance tracing regions, but they have not been updated to the
trace2 API. Do so now.

We already have trace2 regions in unpack_trees.c:clear_ce_flags(), which
uses a linear scan through the index without recursing into trees.

Signed-off-by: Derrick Stolee <dstolee@microsoft.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
unpack-trees.c

index 323280dd48b2cb1e7f6e113f58c12d9332574ec4..af6e9b9c2fd558dc625ddd8f63b54c9e8d489e56 100644 (file)
@@ -1580,6 +1580,8 @@ int unpack_trees(unsigned len, struct tree_desc *t, struct unpack_trees_options
                die("unpack_trees takes at most %d trees", MAX_UNPACK_TREES);
 
        trace_performance_enter();
+       trace2_region_enter("unpack_trees", "unpack_trees", the_repository);
+
        if (!core_apply_sparse_checkout || !o->update)
                o->skip_sparse_checkout = 1;
        if (!o->skip_sparse_checkout && !o->pl) {
@@ -1653,7 +1655,9 @@ int unpack_trees(unsigned len, struct tree_desc *t, struct unpack_trees_options
                }
 
                trace_performance_enter();
+               trace2_region_enter("unpack_trees", "traverse_trees", the_repository);
                ret = traverse_trees(o->src_index, len, t, &info);
+               trace2_region_leave("unpack_trees", "traverse_trees", the_repository);
                trace_performance_leave("traverse_trees");
                if (ret < 0)
                        goto return_failed;
@@ -1741,6 +1745,7 @@ int unpack_trees(unsigned len, struct tree_desc *t, struct unpack_trees_options
 done:
        if (free_pattern_list)
                clear_pattern_list(&pl);
+       trace2_region_leave("unpack_trees", "unpack_trees", the_repository);
        trace_performance_leave("unpack_trees");
        return ret;