]> git.ipfire.org Git - thirdparty/git.git/commitdiff
cache-tree: trace regions for I/O
authorDerrick Stolee <dstolee@microsoft.com>
Mon, 4 Jan 2021 03:09:13 +0000 (03:09 +0000)
committerJunio C Hamano <gitster@pobox.com>
Sat, 16 Jan 2021 07:04:21 +0000 (23:04 -0800)
As we write or read the cache tree index extension, it can be good to
isolate how much of the file I/O time is spent constructing this
in-memory tree from the existing index or writing it out again to the
new index file. Use trace2 regions to indicate that we are spending time
on this operation.

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

index 9efb67486627fb2ff00b3928cc15fbc5202d0bf0..45fb57b17f3befcd7e9a5bf028cbf11bd8229138 100644 (file)
@@ -494,7 +494,9 @@ static void write_one(struct strbuf *buffer, struct cache_tree *it,
 
 void cache_tree_write(struct strbuf *sb, struct cache_tree *root)
 {
+       trace2_region_enter("cache_tree", "write", the_repository);
        write_one(sb, root, "", 0);
+       trace2_region_leave("cache_tree", "write", the_repository);
 }
 
 static struct cache_tree *read_one(const char **buffer, unsigned long *size_p)
@@ -583,9 +585,16 @@ static struct cache_tree *read_one(const char **buffer, unsigned long *size_p)
 
 struct cache_tree *cache_tree_read(const char *buffer, unsigned long size)
 {
+       struct cache_tree *result;
+
        if (buffer[0])
                return NULL; /* not the whole tree */
-       return read_one(&buffer, &size);
+
+       trace2_region_enter("cache_tree", "read", the_repository);
+       result = read_one(&buffer, &size);
+       trace2_region_leave("cache_tree", "read", the_repository);
+
+       return result;
 }
 
 static struct cache_tree *cache_tree_find(struct cache_tree *it, const char *path)