1
0
mirror of https://github.com/git/git.git synced 2024-10-20 13:28:13 +02:00
git/builtin
Nguyễn Thái Ngọc Duy c9486eb04d fsck: avoid reading every object twice
During verify_pack() all objects are read for SHA-1 check. Then
fsck_sha1() is called on every object, which read the object again
(fsck_sha1 -> parse_object -> read_sha1_file).

Avoid reading an object twice, do fsck_sha1 while we have an object
uncompressed data in verify_pack.

On git.git, with this patch I got:

$ /usr/bin/time ./git fsck >/dev/null
98.97user 0.90system 1:40.01elapsed 99%CPU (0avgtext+0avgdata 616624maxresident)k
0inputs+0outputs (0major+194186minor)pagefaults 0swaps

Without it:

$ /usr/bin/time ./git fsck >/dev/null
231.23user 2.35system 3:53.82elapsed 99%CPU (0avgtext+0avgdata 636688maxresident)k
0inputs+0outputs (0major+461629minor)pagefaults 0swaps

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2011-11-06 20:31:28 -08:00
..
add.c
annotate.c
apply.c
archive.c upload-archive: use start_command instead of fork 2011-10-30 18:45:21 -07:00
bisect--helper.c
blame.c Merge branch 'ss/blame-textconv-fake-working-tree' 2011-11-01 15:20:28 -07:00
branch.c branch -m: handle no arg properly 2011-11-02 12:35:37 -07:00
bundle.c
cat-file.c
check-attr.c
check-ref-format.c
checkout-index.c
checkout.c Merge branch 'jk/argv-array' into maint 2011-10-26 16:13:31 -07:00
clean.c
clone.c clone: Quote user supplied path in a single quote pair 2011-10-27 12:02:02 -07:00
commit-tree.c
commit.c
config.c
count-objects.c
describe.c
diff-files.c
diff-index.c
diff-tree.c
diff.c
fast-export.c
fetch-pack.c
fetch.c Merge branch 'cn/fetch-prune' 2011-10-26 16:16:29 -07:00
fmt-merge-msg.c
for-each-ref.c
fsck.c fsck: avoid reading every object twice 2011-11-06 20:31:28 -08:00
gc.c
grep.c builtin/grep: simplify lock_and_read_sha1_file() 2011-10-26 13:09:23 -07:00
hash-object.c
help.c
index-pack.c
init-db.c
log.c
ls-files.c
ls-remote.c
ls-tree.c
mailinfo.c
mailsplit.c
merge-base.c
merge-file.c
merge-index.c
merge-ours.c
merge-recursive.c
merge-tree.c
merge.c
mktag.c
mktree.c
mv.c
name-rev.c
notes.c
pack-objects.c Merge branch 'dm/pack-objects-update' 2011-11-01 15:20:07 -07:00
pack-redundant.c
pack-refs.c
patch-id.c
prune-packed.c
prune.c
push.c
read-tree.c
receive-pack.c receive-pack: do not expect object 0{40} to exist 2011-11-03 14:27:04 -07:00
reflog.c
remote-ext.c
remote-fd.c
remote.c Merge branch 'cn/fetch-prune' 2011-10-26 16:16:29 -07:00
replace.c
rerere.c
reset.c
rev-list.c
rev-parse.c
revert.c
rm.c
send-pack.c
shortlog.c
show-branch.c
show-ref.c
stripspace.c
symbolic-ref.c
tag.c
tar-tree.c
unpack-file.c
unpack-objects.c
update-index.c
update-ref.c
update-server-info.c
upload-archive.c upload-archive: use start_command instead of fork 2011-10-30 18:45:21 -07:00
var.c
verify-pack.c
verify-tag.c
write-tree.c