author | Nicolas Pitre <nico@cam.org> | |
Fri, 6 May 2005 17:48:34 +0000 (13:48 -0400) | ||
committer | Linus Torvalds <torvalds@ppc970.osdl.org> | |
Fri, 6 May 2005 18:02:01 +0000 (11:02 -0700) | ||
commit | bd2c39f58f915af532b488c5bda753314f0db603 | |
tree | 8c1e85a4af5d77cff94fc2703c271bbfc512778e | tree | snapshot |
parent | f4f21ce367a5119be1c4396d01271ece6e40ff70 | commit | diff |
[PATCH] don't load and decompress objects twice with parse_object()
It turns out that parse_object() is loading and decompressing given
object to free it just before calling the specific object parsing
function which does mmap and decompress the same object again. This
patch introduces the ability to parse specific objects directly from a
memory buffer.
Without this patch, running git-fsck-cache on the kernel repositorytake:
real 0m13.006s
user 0m11.421s
sys 0m1.218s
With this patch applied:
real 0m8.060s
user 0m7.071s
sys 0m0.710s
The performance increase is significant, and this is kind of a
prerequisite for sane delta object support with fsck.
Signed-off-by: Nicolas Pitre <nico@cam.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
It turns out that parse_object() is loading and decompressing given
object to free it just before calling the specific object parsing
function which does mmap and decompress the same object again. This
patch introduces the ability to parse specific objects directly from a
memory buffer.
Without this patch, running git-fsck-cache on the kernel repositorytake:
real 0m13.006s
user 0m11.421s
sys 0m1.218s
With this patch applied:
real 0m8.060s
user 0m7.071s
sys 0m0.710s
The performance increase is significant, and this is kind of a
prerequisite for sane delta object support with fsck.
Signed-off-by: Nicolas Pitre <nico@cam.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
blob.c | diff | blob | history | |
blob.h | diff | blob | history | |
commit.c | diff | blob | history | |
commit.h | diff | blob | history | |
object.c | diff | blob | history | |
tag.c | diff | blob | history | |
tag.h | diff | blob | history | |
tree.c | diff | blob | history | |
tree.h | diff | blob | history |