From: Elijah Newren Date: Wed, 25 Aug 2010 02:53:14 GMT Subject: [PATCH 6/7] list-objects.c: Avoid recomputing interesting-ness for subtrees when possible Message-ID: <1282704795-29661-7-git-send-email-newren@gmail.com> In-Reply-To: <1282704795-29661-1-git-send-email-newren@gmail.com> Weather balloon patch. Doesn't seem to help much in benchmarks; in fact I think it sometimes hurts a bit. Is it worthwhile just in case someone comes up with a ginormous tree that is really deep with few entries per tree? I'm leaning against it, but am sending the patch to at least show others that it has been considered. --- No signed-off-by, since I'm not sold on this patch and am somewhat leaning against it. It would need a better commit message anyway. :-) list-objects.c | 9 +++++---- 1 files changed, 5 insertions(+), 4 deletions(-) diff --git a/list-objects.c b/list-objects.c index daa50bf..66e4ccc 100644 --- a/list-objects.c +++ b/list-objects.c @@ -61,13 +61,13 @@ static void process_tree(struct rev_info *revs, struct tree *tree, show_object_fn show, struct name_path *path, - const char *name) + const char *name, + int all_interesting) { struct object *obj = &tree->object; struct tree_desc desc; struct name_entry entry; struct name_path me; - int all_interesting = (revs->diffopt.nr_paths == 0); if (!revs->tree_objects) return; @@ -106,7 +106,8 @@ static void process_tree(struct rev_info *revs, if (S_ISDIR(entry.mode)) process_tree(revs, lookup_tree(entry.sha1), - show, &me, entry.path); + show, &me, entry.path, + all_interesting); else if (S_ISGITLINK(entry.mode)) process_gitlink(revs, entry.sha1, show, &me, entry.path); @@ -182,7 +183,7 @@ void traverse_commit_list(struct rev_info *revs, } if (obj->type == OBJ_TREE) { process_tree(revs, (struct tree *)obj, show_object, - NULL, name); + NULL, name, revs->diffopt.nr_paths == 0); continue; } if (obj->type == OBJ_BLOB) { -- 1.7.2.2.39.gf7e23