From: Junio C Hamano Date: Fri, 08 Aug 2008 22:59:16 GMT Subject: Re: [PATCH] git-svn: Make it scream by minimizing temp files Message-ID: <7vd4kjazaz.fsf@gitster.siamese.dyndns.org> In-Reply-To: <1218235313-19480-1-git-send-email-marcus@griep.us> Marcus Griep writes: > 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?