git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
* [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).