summaryrefslogtreecommitdiff
path: root/object.c
diff options
context:
space:
mode:
authorLibravatar Jeff King <peff@peff.net>2013-03-17 04:38:57 -0400
committerLibravatar Junio C Hamano <gitster@pobox.com>2013-03-17 15:28:15 -0700
commit30b939c33ad5b8a9dfbe3fe5aafc36d89c40409f (patch)
tree9d9d298c40018d7d346cd88bee5b54a4943a7199 /object.c
parentfast-export: rename handle_object function (diff)
downloadtgif-30b939c33ad5b8a9dfbe3fe5aafc36d89c40409f.tar.xz
fast-export: do not load blob objects twice
When fast-export wants to export a blob object, it first calls parse_object to get a "struct object" and check whether we have already shown the object. If we haven't shown it, we then use read_sha1_file to pull it from disk and write it out. That means we load each blob from disk twice: once for parse_object to find its type and check its sha1, and a second time when we actually output it. We can drop this to a single load by using lookup_object to check the SHOWN flag, and then checking the signature on and outputting a single buffer. This provides modest speedups on git.git (best-of-five, "git fast-export HEAD >/dev/null"): [before] [after] real 0m14.347s real 0m13.780s user 0m14.084s user 0m13.620s sys 0m0.208s sys 0m0.100s and somewhat more on more blob-heavy repos (this is a repository full of media files): [before] [after] real 0m52.236s real 0m44.451s user 0m50.568s user 0m43.000s sys 0m1.536s sys 0m1.284s Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'object.c')
0 files changed, 0 insertions, 0 deletions