aboutsummaryrefslogtreecommitdiff
path: root/Documentation
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@osdl.org>2005-09-15 15:14:29 -0700
committerJunio C Hamano <junkio@cox.net>2005-09-15 16:19:44 -0700
commit5bdbaaa4e9dd901dd2907b53bbecfdf3eac9276b (patch)
tree9c7b43b716382262746895fcadc58563d0c0dba8 /Documentation
parent5098bafb756de69d03882707a3382899c0cb7dd1 (diff)
downloadgit-5bdbaaa4e9dd901dd2907b53bbecfdf3eac9276b.tar.gz
git-5bdbaaa4e9dd901dd2907b53bbecfdf3eac9276b.tar.xz
[PATCH] Re-organize "git-rev-list --objects" logic
The logic to calculate the full object list used to be very inter-twined with the logic that looked up the commits. For no good reason - it's actually a lot simpler to just do that logic as a separate pass. This improves performance a bit, and uses slightly less memory in my tests, but more importantly it makes the code simpler to work with and follow what it does. The performance win is less than I had hoped for, but I get: Before: [torvalds@g5 linux]$ /usr/bin/time git-rev-list --objects v2.6.12..HEAD | wc -l 13.64user 0.42system 0:14.13elapsed 99%CPU (0avgtext+0avgdata 0maxresident)k 0inputs+0outputs (0major+47947minor)pagefaults 0swaps 58945 After: [torvalds@g5 linux]$ /usr/bin/time git-rev-list --objects v2.6.12..HEAD | wc -l 11.80user 0.36system 0:12.16elapsed 99%CPU (0avgtext+0avgdata 0maxresident)k 0inputs+0outputs (0major+42684minor)pagefaults 0swaps 58945 ie it improved by 2 seconds, and took a 5000+ fewer pages (hey, that's 20MB out of 174MB to go). And got the same number of objects (in theory, the more expensive one might find some more shared objects to avoid. In practice it obviously doesn't). I know how to make it use _lots_ less memory, which will probably speed it up. But that's for another time, and I'd prefer to see this go in first. Signed-off-by: Linus Torvalds <torvalds@osdl.org> Signed-off-by: Junio C Hamano <junkio@cox.net>
Diffstat (limited to 'Documentation')
0 files changed, 0 insertions, 0 deletions