summaryrefslogtreecommitdiff
path: root/builtin-show-branch.c
diff options
context:
space:
mode:
authorLibravatar Alexandre Julliard <julliard@winehq.org>2006-07-23 19:51:04 +0200
committerLibravatar Junio C Hamano <junkio@cox.net>2006-07-23 23:44:00 -0700
commitf8263c5339fd70ee00b60c37b715c7e46b30a3bf (patch)
treebf9bd85b7cc1910f54d1c9d08ef574d64fd125f7 /builtin-show-branch.c
parentpack-objects: check pack.window for default window size (diff)
downloadtgif-f8263c5339fd70ee00b60c37b715c7e46b30a3bf.tar.xz
show-branch: Fix another performance problem.
When naming commits, stop walking the parent chain as soon as we find a commit that already has a name. The parent chain of that commit will be walked later on in any case (or may even have been walked already). This avoids O(n^2) behavior; on a tree where show-branch displays 6800 commits, the total run time drops from 77 seconds to 5 seconds. Signed-off-by: Alexandre Julliard <julliard@winehq.org> Signed-off-by: Junio C Hamano <junkio@cox.net>
Diffstat (limited to 'builtin-show-branch.c')
-rw-r--r--builtin-show-branch.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/builtin-show-branch.c b/builtin-show-branch.c
index 3d240ca435..82f75b72de 100644
--- a/builtin-show-branch.c
+++ b/builtin-show-branch.c
@@ -89,6 +89,8 @@ static int name_first_parent_chain(struct commit *c)
name_parent(c, p);
i++;
}
+ else
+ break;
c = p;
}
return i;