diff options
author | Alexandre Julliard <julliard@winehq.org> | 2006-07-23 19:51:04 +0200 |
---|---|---|
committer | Junio C Hamano <junkio@cox.net> | 2006-07-23 23:44:00 -0700 |
commit | f8263c5339fd70ee00b60c37b715c7e46b30a3bf (patch) | |
tree | bf9bd85b7cc1910f54d1c9d08ef574d64fd125f7 | |
parent | pack-objects: check pack.window for default window size (diff) | |
download | tgif-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>
-rw-r--r-- | builtin-show-branch.c | 2 |
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; |