[PATCH] faster initial commit due to buffered logging

Ian Clatworthy ian.clatworthy at internode.on.net
Mon May 28 12:05:56 BST 2007


The attached patch builds on the previous submitted one and includes 
better comments in response to feedback from Andrew Bennetts. The main 
improvement though is "smarter" logging in that the "added ..." messages 
are output at the end, not in situ. To be strictly correct, the add 
messages are buffered until an 'interesting' one (like 'Committed 
revision xx.') is logged.

As crazy as it sounds, the impact of this patch can be dramatic on the 
performance of initial imports of a code base. For Bazaar 0.16, elapsed 
time drops from 11.2 secs to 5.5 secs - a 50% improvement. For the 
Mozilla tree, elapsed time drops on my laptop from 24+ minutes to 17+ 
minutes, an improvement of around 30%.

Interestingly, the profiling data suggested that logging was taking 
around 10% of the total time - a (very) high number but not enough to 
explain the improvements. This looks like a case of the implicit writes 
to ~/.bzr.log playing havoc with the disk heads as they are trying to 
write other files. Dumping all the log messages at the end avoids this, 
while also making the progress bar UI that much more useful.

Of course, we could decide to not output the 'added ...' messages at all 
by default (like some other tools do) but that is arguably a bridge too 
far. :-)

Ian C.

-------------- next part --------------
A non-text attachment was scrubbed...
Name: committ-buffered-logging.patch
Type: text/x-patch
Size: 4946 bytes
Desc: not available
Url : https://lists.ubuntu.com/archives/bazaar/attachments/20070528/d6eae3c8/attachment.bin 


More information about the bazaar mailing list