Re: [ANNOUNCE] pg - A patch porcelain for GIT

Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
From: Shawn Pearce
Date: Monday, February 13, 2006 - 11:14 pm

Shawn Pearce <spearce@spearce.org> wrote:

I did a quick benchmark of the latest StGIT and pg versions available
by cloning a linux repository twice (pg and stg) and constructing
an identical patch in in each which modified the same set of files
(3 files in 3 different subdirectories).

Popping and pushing this patch of 3 files is a fast forward/rewind
case to both implementations, but pg was faster for me:

stg pop; stg push (fast-forward)
  pop  real 0m13.824s user 0m1.904s sys 0m3.934s
  pop  real 0m13.670s user 0m1.882s sys 0m3.973s
  pop  real 0m21.070s user 0m2.005s sys 0m4.069s
  pop  real 0m15.346s user 0m1.757s sys 0m3.846s
  pop  real 0m16.960s user 0m1.888s sys 0m3.866s
          
  push real 0m20.650s user 0m2.027s sys 0m4.015s
  push real 0m15.624s user 0m1.958s sys 0m3.966s
  push real 0m13.277s user 0m1.746s sys 0m3.796s
  push real 0m12.739s user 0m1.764s sys 0m3.822s
  push real 0m15.161s user 0m1.973s sys 0m3.939s
        
pg-pop; pg-push (fast-forward)
  pop  real 0m10.009s user 0m1.919s sys 0m2.265s
  pop  real 0m 4.710s user 0m1.692s sys 0m1.560s
  pop  real 0m 4.333s user 0m1.664s sys 0m1.554s
  pop  real 0m 5.480s user 0m1.848s sys 0m1.638s
  pop  real 0m 4.412s user 0m1.680s sys 0m1.604s
          
  push real 0m5.813s user 0m1.750s sys 0m1.733s
  push real 0m4.345s user 0m1.686s sys 0m1.632s
  push real 0m5.326s user 0m1.721s sys 0m1.658s
  push real 0m4.740s user 0m1.691s sys 0m1.647s
  push real 0m4.487s user 0m1.702s sys 0m1.637s


I tried to do the merge case which requires reconstructing the
patch onto a new base revision.  This was easy to test over and over
again on pg (pg-rebase; pg-rebase --undo) but I don't know how I can
safely undo the stg pull so I can repeat it on the stg repository.
Instead I tested git-diff-tree|git-apply as that's what StGIT uses
internally.  StGIT does a check for a clean tree before starting
its merge so I cheated here and used the pg version of that check
as part of the diff/apply cost to try and make it slightly more
fair to pg-rebase.

git-diff-tree -p %s %s | git-apply --index
  diff/apply real 0m6.246s user 0m1.377s sys 0m1.634s
  diff/apply real 0m5.293s user 0m1.342s sys 0m1.591s
  diff/apply real 0m5.929s user 0m1.445s sys 0m1.614s
  diff/apply real 0m5.258s user 0m1.333s sys 0m1.567s
  diff/apply real 0m5.255s user 0m1.339s sys 0m1.581s

pg-rebase; pg-rebase --undo (merge)
  rebase real 0m9.505s user 0m4.028s sys 0m3.366s
  rebase real 0m9.415s user 0m4.020s sys 0m3.334s
  rebase real 0m9.387s user 0m4.028s sys 0m3.364s
  rebase real 0m9.159s user 0m4.024s sys 0m3.353s
  rebase real 0m9.008s user 0m4.025s sys 0m3.326s

  undo   real 0m6.531s user 0m1.852s sys 0m2.403s
  undo   real 0m6.383s user 0m1.815s sys 0m2.405s
  undo   real 0m6.510s user 0m1.849s sys 0m2.406s
  undo   real 0m6.519s user 0m1.846s sys 0m2.408s
  undo   real 0m6.496s user 0m1.878s sys 0m2.413s

I guess you could say I didn't entirely expect this result.
The diff-tree/apply approach is faster for a single commit then
read-tree -u -m is; even if totally different files are being
impacted and thus all stages collapse neatly to stage 0 in the index.
No wonder StGIT uses diff/apply!

-- 
Shawn.
-
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
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
[ANNOUNCE] pg - A patch porcelain for GIT, Shawn Pearce, (Fri Feb 10, 12:59 pm)
Re: [ANNOUNCE] pg - A patch porcelain for GIT, Greg KH, (Fri Feb 10, 1:41 pm)
Re: [ANNOUNCE] pg - A patch porcelain for GIT, Shawn Pearce, (Fri Feb 10, 2:04 pm)
Re: [ANNOUNCE] pg - A patch porcelain for GIT, Petr Baudis, (Fri Feb 10, 2:17 pm)
Re: [ANNOUNCE] pg - A patch porcelain for GIT, Shawn Pearce, (Fri Feb 10, 2:38 pm)
Re: [ANNOUNCE] pg - A patch porcelain for GIT, Petr Baudis, (Fri Feb 10, 2:47 pm)
Re: [ANNOUNCE] pg - A patch porcelain for GIT, Junio C Hamano, (Fri Feb 10, 3:07 pm)
Re: [ANNOUNCE] pg - A patch porcelain for GIT, Greg KH, (Fri Feb 10, 4:20 pm)
Re: [ANNOUNCE] pg - A patch porcelain for GIT, Sam Vilain, (Sun Feb 12, 7:49 pm)
Re: [ANNOUNCE] pg - A patch porcelain for GIT, Shawn Pearce, (Sun Feb 12, 8:29 pm)
Re: [ANNOUNCE] pg - A patch porcelain for GIT, Sam Vilain, (Sun Feb 12, 9:40 pm)
Re: [ANNOUNCE] pg - A patch porcelain for GIT, Shawn Pearce, (Sun Feb 12, 11:03 pm)
Re: [ANNOUNCE] pg - A patch porcelain for GIT, Catalin Marinas, (Mon Feb 13, 7:40 am)
Re: [ANNOUNCE] pg - A patch porcelain for GIT, Petr Baudis, (Mon Feb 13, 2:00 pm)
Re: [ANNOUNCE] pg - A patch porcelain for GIT, Shawn Pearce, (Mon Feb 13, 9:56 pm)
Re: [ANNOUNCE] pg - A patch porcelain for GIT, Shawn Pearce, (Mon Feb 13, 11:14 pm)
Re: [ANNOUNCE] pg - A patch porcelain for GIT, Catalin Marinas, (Tue Feb 14, 2:26 am)
Re: [ANNOUNCE] pg - A patch porcelain for GIT, Karl , (Tue Feb 14, 3:08 am)
Re: [ANNOUNCE] pg - A patch porcelain for GIT, Chuck Lever, (Tue Feb 14, 8:22 am)
Re: [ANNOUNCE] pg - A patch porcelain for GIT, Karl , (Tue Feb 14, 9:07 am)
Re: [ANNOUNCE] pg - A patch porcelain for GIT, Chuck Lever, (Tue Feb 14, 1:58 pm)
Re: [ANNOUNCE] pg - A patch porcelain for GIT, Petr Baudis, (Tue Feb 14, 3:29 pm)
Re: [ANNOUNCE] pg - A patch porcelain for GIT, Sam Vilain, (Tue Feb 14, 5:22 pm)
Re: [ANNOUNCE] pg - A patch porcelain for GIT, Shawn Pearce, (Tue Feb 14, 5:35 pm)
Re: [ANNOUNCE] pg - A patch porcelain for GIT, Petr Baudis, (Tue Feb 14, 6:14 pm)
Re: [ANNOUNCE] pg - A patch porcelain for GIT, J. Bruce Fields, (Tue Feb 14, 9:11 pm)
Re: [ANNOUNCE] pg - A patch porcelain for GIT, Shawn Pearce, (Tue Feb 14, 11:54 pm)
Re: [ANNOUNCE] pg - A patch porcelain for GIT, Karl , (Wed Feb 15, 3:11 am)
Re: [ANNOUNCE] pg - A patch porcelain for GIT, Andreas Ericsson, (Wed Feb 15, 3:42 am)
Re: [ANNOUNCE] pg - A patch porcelain for GIT, Karl , (Wed Feb 15, 4:25 am)
Re: [ANNOUNCE] pg - A patch porcelain for GIT, Karl , (Wed Feb 15, 4:27 am)
Re: [ANNOUNCE] pg - A patch porcelain for GIT, Catalin Marinas, (Wed Feb 15, 10:12 am)
Re: [ANNOUNCE] pg - A patch porcelain for GIT, Catalin Marinas, (Wed Feb 15, 10:20 am)
Re: [ANNOUNCE] pg - A patch porcelain for GIT, Catalin Marinas, (Wed Feb 15, 10:25 am)
Re: [ANNOUNCE] pg - A patch porcelain for GIT, Shawn Pearce, (Wed Feb 15, 10:55 am)
Re: [ANNOUNCE] pg - A patch porcelain for GIT, J. Bruce Fields, (Wed Feb 15, 12:45 pm)
Re: [ANNOUNCE] pg - A patch porcelain for GIT, Karl , (Thu Feb 16, 12:54 am)
Re: [ANNOUNCE] pg - A patch porcelain for GIT, Junio C Hamano, (Thu Feb 16, 3:24 am)
Re: [ANNOUNCE] pg - A patch porcelain for GIT, Catalin Marinas, (Thu Feb 16, 3:33 am)
Re: [ANNOUNCE] pg - A patch porcelain for GIT, Fernando J. Pereda, (Thu Feb 16, 3:42 am)
Re: [ANNOUNCE] pg - A patch porcelain for GIT, Junio C Hamano, (Thu Feb 16, 3:52 am)
Re: [ANNOUNCE] pg - A patch porcelain for GIT, Catalin Marinas, (Thu Feb 16, 4:10 am)
[PATCH 0/2] stg uncommit, Karl , (Thu Feb 16, 9:27 pm)
[PATCH 2/2] Add 'stg uncommit' command, Karl , (Thu Feb 16, 9:31 pm)
Re: [ANNOUNCE] pg - A patch porcelain for GIT, Catalin Marinas, (Fri Feb 17, 2:57 pm)
Re: [PATCH 2/2] Add 'stg uncommit' command, Catalin Marinas, (Sun Feb 19, 3:51 am)
Re: [PATCH 2/2] Add 'stg uncommit' command, Karl , (Sun Feb 19, 6:45 am)
Re: [PATCH 2/2] Add 'stg uncommit' command, Karl , (Sun Feb 19, 7:47 am)
Re: [PATCH 2/2] Add 'stg uncommit' command, Sam Vilain, (Sun Feb 19, 2:15 pm)
Re: [PATCH 2/2] Add 'stg uncommit' command, Catalin Marinas, (Mon Feb 20, 10:20 am)
Re: [PATCH 2/2] Add 'stg uncommit' command, Karl , (Mon Feb 20, 10:30 am)
Re: [PATCH 2/2] Add 'stg uncommit' command, Catalin Marinas, (Mon Feb 20, 3:49 pm)
Re: [PATCH 2/2] Add 'stg uncommit' command, Karl , (Tue Feb 21, 12:55 am)