unpack-trees: add trace2 regions

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>
This commit is contained in:
Derrick Stolee 2021-01-04 03:09:11 +00:00 коммит произвёл Junio C Hamano
Родитель da8be8ced6
Коммит c338898a47
1 изменённых файлов: 5 добавлений и 0 удалений

Просмотреть файл

@ -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); die("unpack_trees takes at most %d trees", MAX_UNPACK_TREES);
trace_performance_enter(); trace_performance_enter();
trace2_region_enter("unpack_trees", "unpack_trees", the_repository);
if (!core_apply_sparse_checkout || !o->update) if (!core_apply_sparse_checkout || !o->update)
o->skip_sparse_checkout = 1; o->skip_sparse_checkout = 1;
if (!o->skip_sparse_checkout && !o->pl) { 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(); trace_performance_enter();
trace2_region_enter("unpack_trees", "traverse_trees", the_repository);
ret = traverse_trees(o->src_index, len, t, &info); ret = traverse_trees(o->src_index, len, t, &info);
trace2_region_leave("unpack_trees", "traverse_trees", the_repository);
trace_performance_leave("traverse_trees"); trace_performance_leave("traverse_trees");
if (ret < 0) if (ret < 0)
goto return_failed; goto return_failed;
@ -1741,6 +1745,7 @@ int unpack_trees(unsigned len, struct tree_desc *t, struct unpack_trees_options
done: done:
if (free_pattern_list) if (free_pattern_list)
clear_pattern_list(&pl); clear_pattern_list(&pl);
trace2_region_leave("unpack_trees", "unpack_trees", the_repository);
trace_performance_leave("unpack_trees"); trace_performance_leave("unpack_trees");
return ret; return ret;