From: René Scharfe Date: Tue, 13 Dec 2022 06:27:10 +0000 (+0100) Subject: commit: skip already cleared parents in clear_commit_marks_1() X-Git-Tag: v2.40.0-rc0~129^2 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=4cb39fcf19b969cdfa042b65d4d0b62a7fd0ba1e;p=thirdparty%2Fgit.git commit: skip already cleared parents in clear_commit_marks_1() Don't put clean parents on the pending list, as they and their ancestors don't need any treatment and would be skipped later anyway. This saves the allocation and release of a commit list item in ca. 20% of the cases during a run of the test suite. Signed-off-by: René Scharfe Signed-off-by: Junio C Hamano --- diff --git a/commit.c b/commit.c index 89b8efc611..115347977a 100644 --- a/commit.c +++ b/commit.c @@ -693,8 +693,10 @@ static void clear_commit_marks_1(struct commit_list **plist, if (!parents) return; - while ((parents = parents->next)) - commit_list_insert(parents->item, plist); + while ((parents = parents->next)) { + if (parents->item->object.flags & mark) + commit_list_insert(parents->item, plist); + } commit = commit->parents->item; }