Re: [PATCH] git-svn: Make it scream by minimizing temp files
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Aug 8, 2008, 22:59 UTC
- Message-ID
- <7vd4kjazaz.fsf@gitster.siamese.dyndns.org>
- In-Reply-To
- <1218235313-19480-1-git-send-email-marcus@griep.us>
Marcus Griep <marcus@griep.us> writes:
Show 18 quoted lines
> Currently, git-svn would create a temp file on four occasions: > 1. Reading a blob out of the object db > 2. Creating a delta from svn > 3. Hashing and writing a blob into the object db > 4. Reading a blob out of the object db (in another place in code) > > Any time git-svn did the above, it would dutifully create and then > delete said temp file. Unfortunately, this means that between 2-4 > temporary files are created/deleted per file 'add/modify'-ed in > svn (O(n)). This causes significant overhead and helps the inode > counter to spin beautifully. > > By its nature, git-svn is a serial beast. Thus, reusing a temp file > does not pose significant problems. "truncate and seek" takes much > less time than "unlink and create". This patch centralizes the > tempfile creation and holds onto the tempfile until they are deleted > on exit. This significantly reduces file overhead, now requiring > at most three (3) temp files per run (O(1)).
Beautifully written analysis of the issue being tackled.
But optimization patch should be backed by numbers --- do you have a benchmark result of some sort that you would want to include here?