Subject: Quilt vs. StGIT Performance

From: Catalin Marinas <[email-masked]>
Date: Tue, 04 Oct 2005 10:09:30 +0100

I ran some benchmarks on both Quilt and StGIT (only the push/pop
operations) with the -mm series (2.6.14-rc2-mm2, 566 patches). All the
patches were refreshed since GIT does not support fuzzy patches. The
tools output was directed to /dev/null (a slight advantage for Quilt
since it prints more information). For the StGIT benchmarks, the base
of the stack was modified before each 'stg push -a' command because
otherwise pushing would just fast-forward the patches (timing similar
to the pop command).

As you can see below, 'quilt push' is much faster than 'stg push'. The
profiling information on the latest snapshot shows that StGIT spends
most of the time (~75%) in git-write-tree (which calculates the SHA1
value of the index file after every push). Unfortunately, this cannot
be avoided (otherwise, we would simply re-write Quilt).

There are other advantages of StGIT vs. Quilt but I won't go through
them in this e-mail. For huge number of patches, it's up to you to
decide whether speed is more important than the other StGIT features.

Quilt vs. StGIT (push/pop)
==========================

No. patches:   566 (linux-2.6.14-rc2-mm2)
Machine:       P4 @ 2.5GHz, 512MB RAM, WDC IDE disk
OS:            Linux 2.6.8-2-686 #1 Thu May 19 17:53:30 JST 2005 i686 GNU/Linux
StGIT version: snapshot of 2005-10-04
Quilt version: 0.39-2 (on Debian)
GIT version:   0.99.8.GIT

       run 1     run 2     run 3     run 4     run 5    average   per patch
---------------------------------------------------------------------------
stg push
---------------------------------------------------------------------------
real  4:56.261  4:07.660  3:37.361  4:20.393  4:16.312  4:15.597  0.452s
user  1:44.004  1:44.051  1:44.047  1:43.802  1:43.718  1:43.924
sys   0:49.803  0:49.812  0:49.458  0:49.714  0:49.954  0:49.748
---------------------------------------------------------------------------
stg pop
---------------------------------------------------------------------------
real  0:27.918  0:14.123  0:17.280  0:45.767  0:26.957  0:26.409  0.047s
user  0:01.857  0:01.852  0:01.864  0:01.883  0:01.867  0:01.865
sys   0:00.761  0:00.703  0:00.680  0:00.796  0:00.740  0:00.736
---------------------------------------------------------------------------
quilt push
---------------------------------------------------------------------------
real  1:00.584  0:36.191  0:34.728  0:24.723  0:30.498  0:37.345  0.066s
user  0:05.687  0:05.551  0:05.632  0:05.591  0:05.618  0:05.616
sys   0:07.835  0:07.588  0:07.454  0:07.536  0:07.552  0:07.593
---------------------------------------------------------------------------
quilt pop
---------------------------------------------------------------------------
real  0:55.772  0:44.721  0:45.503  0:58.081  0:51.621  0:51.140  0.090s
user  0:13.606  0:13.601  0:13.646  0:13.725  0:13.590  0:13.634
sys   0:24.813  0:24.762  0:24.697  0:24.658  0:24.833  0:24.750

-- 
Catalin