* [PATCH] Speed up commands that use rev-list when max-count is specified.
@ 2010-03-21 3:31 Benjamin C Meyer
2010-03-21 11:12 ` Sverre Rabbelier
2010-03-21 14:09 ` Mark Lodato
0 siblings, 2 replies; 4+ messages in thread
From: Benjamin C Meyer @ 2010-03-21 3:31 UTC (permalink / raw
To: git; +Cc: Benjamin C Meyer
Many command have code similar to the following:
while ((commit = get_revision(rev)) != NULL) { ... }
This results in and extra call to get_revision that first finds the next
revision and then notices max-count is 0 and returns NULL. Adding
a max-count check before any expensive work reduces the runtime of all
of the commands the have this pattern.
Depending on the use case this can have a big impact on the running time.
Signed-off-by: Benjamin C Meyer <bmeyer@rim.com>
---
revision.c | 3 +++
1 files changed, 3 insertions(+), 0 deletions(-)
diff --git a/revision.c b/revision.c
index 490b484..4673d70 100644
--- a/revision.c
+++ b/revision.c
@@ -2058,6 +2058,9 @@ static struct commit *get_revision_internal(struct rev_info *revs)
struct commit *get_revision(struct rev_info *revs)
{
+ if (revs->max_count == 0)
+ return NULL;
+
struct commit *c;
struct commit_list *reversed;
--
1.7.0.2
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH] Speed up commands that use rev-list when max-count is specified.
2010-03-21 3:31 [PATCH] Speed up commands that use rev-list when max-count is specified Benjamin C Meyer
@ 2010-03-21 11:12 ` Sverre Rabbelier
2010-03-21 16:57 ` Benjamin Meyer
2010-03-21 14:09 ` Mark Lodato
1 sibling, 1 reply; 4+ messages in thread
From: Sverre Rabbelier @ 2010-03-21 11:12 UTC (permalink / raw
To: Benjamin C Meyer; +Cc: git
Heya,
On Sun, Mar 21, 2010 at 04:31, Benjamin C Meyer <bmeyer@rim.com> wrote:
> Depending on the use case this can have a big impact on the running time.
Sounds promising, do you have any numbers?
--
Cheers,
Sverre Rabbelier
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] Speed up commands that use rev-list when max-count is specified.
2010-03-21 3:31 [PATCH] Speed up commands that use rev-list when max-count is specified Benjamin C Meyer
2010-03-21 11:12 ` Sverre Rabbelier
@ 2010-03-21 14:09 ` Mark Lodato
1 sibling, 0 replies; 4+ messages in thread
From: Mark Lodato @ 2010-03-21 14:09 UTC (permalink / raw
To: Benjamin C Meyer; +Cc: git
On Sat, Mar 20, 2010 at 11:31 PM, Benjamin C Meyer <bmeyer@rim.com> wrote:
> struct commit *get_revision(struct rev_info *revs)
> {
> + if (revs->max_count == 0)
> + return NULL;
> +
> struct commit *c;
> struct commit_list *reversed;
Declaring variables in the middle of a function is a C99 feature (and
a GNU extension in C89 mode). I don't know if this is allowed in git
code, but it would be easy enough to make this ANSI C89 compatible by
putting your new statement after the variable declarations.
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] Speed up commands that use rev-list when max-count is specified.
2010-03-21 11:12 ` Sverre Rabbelier
@ 2010-03-21 16:57 ` Benjamin Meyer
0 siblings, 0 replies; 4+ messages in thread
From: Benjamin Meyer @ 2010-03-21 16:57 UTC (permalink / raw
To: Sverre Rabbelier; +Cc: Benjamin C Meyer, git
In the git repo a more extreme case doing something like git log -1 copy.c the patch will reduce the runtime by 70%. Running it on every top level file in git ('for f in *; log -1 $f; done') goes from 9 minutes to 8:30.
-Benjamin Meyer
On Mar 21, 2010, at 7:12 AM, Sverre Rabbelier wrote:
> Heya,
>
> On Sun, Mar 21, 2010 at 04:31, Benjamin C Meyer <bmeyer@rim.com> wrote:
>> Depending on the use case this can have a big impact on the running time.
>
> Sounds promising, do you have any numbers?
>
> --
> Cheers,
>
> Sverre Rabbelier
> --
> To unsubscribe from this list: send the line "unsubscribe git" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2010-03-21 16:57 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-03-21 3:31 [PATCH] Speed up commands that use rev-list when max-count is specified Benjamin C Meyer
2010-03-21 11:12 ` Sverre Rabbelier
2010-03-21 16:57 ` Benjamin Meyer
2010-03-21 14:09 ` Mark Lodato
Code repositories for project(s) associated with this public inbox
https://80x24.org/mirrors/git.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).