git-commit-vandalism/Documentation
Nguyễn Thái Ngọc Duy b8a2486f15 index-pack: support multithreaded delta resolving
This puts delta resolving on each base on a separate thread, one base
cache per thread. Per-thread data is grouped in struct thread_local.
When running with nr_threads == 1, no pthreads calls are made. The
system essentially runs in non-thread mode.

An experiment on a Xeon 24 core machine with git.git shows that
performance does not increase proportional to the number of cores. So
by default, we use maximum 3 cores. Some numbers with --threads from 1
to 16:

1..4
real    0m8.003s  0m5.307s  0m4.321s  0m3.830s
user    0m7.720s  0m8.009s  0m8.133s  0m8.305s
sys     0m0.224s  0m0.372s  0m0.360s  0m0.360s

5..8
real    0m3.727s  0m3.604s  0m3.332s  0m3.369s
user    0m9.361s  0m9.817s  0m9.525s  0m9.769s
sys     0m0.584s  0m0.624s  0m0.540s  0m0.560s

9..12
real    0m3.036s  0m3.139s  0m3.177s  0m2.961s
user    0m8.977s  0m10.205s 0m9.737s  0m10.073s
sys     0m0.596s  0m0.680s  0m0.684s  0m0.680s

13..16
real    0m2.985s  0m2.894s  0m2.975s  0m2.971s
user    0m9.825s  0m10.573s 0m10.833s 0m11.361s
sys     0m0.788s  0m0.732s  0m0.904s  0m1.016s

On an Intel dual core and linux-2.6.git

1..4
real    2m37.789s 2m7.963s  2m0.920s  1m58.213s
user    2m28.415s 2m52.325s 2m50.176s 2m41.187s
sys     0m7.808s  0m11.181s 0m11.224s 0m10.731s

Thanks Ramsay Jones for troubleshooting and support on MinGW platform.

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2012-05-07 15:48:15 -07:00
..
howto request-pull: explicitly ask tags/$name to be pulled 2012-01-31 21:27:58 -08:00
pt_BR
RelNotes Merge branch 'maint' 2012-02-27 15:37:02 -08:00
technical Merge branch 'tr/maint-bundle-long-subject' 2012-02-26 23:05:51 -08:00
.gitattributes
.gitignore Documentation: ignore *.pdf files 2011-08-08 09:30:12 -07:00
asciidoc.conf Merge branch 'jc/maint-doc-em-dash' 2010-09-03 09:43:42 -07:00
blame-options.txt use -h for synopsis and --help for manpage consistently 2011-10-05 10:47:10 -07:00
build-docdep.perl
cat-texi.perl
cmd-list.perl
CodingGuidelines CodingGuidelines: do not use 'which' in shell scripts 2012-02-27 15:10:23 -08:00
config.txt config: add include directive 2012-02-17 07:59:55 -08:00
date-formats.txt Document date formats accepted by parse_date() 2009-12-03 12:41:37 -08:00
diff-config.txt New --dirstat=lines mode, doing dirstat analysis based on diffstat 2011-04-29 11:22:55 -07:00
diff-format.txt Fix typos in technical documentation. 2010-01-31 10:24:53 -08:00
diff-generate-patch.txt diff format documentation: clarify --cc and -c 2011-03-08 14:44:07 -08:00
diff-options.txt Sync with 1.7.7.3 2011-11-08 16:38:14 -08:00
docbook-xsl.css
docbook.xsl Documentation: set a !DOCTYPE for user manual 2010-08-20 10:53:56 -07:00
everyday.txt everyday.txt: change "tracking branch" to "remote-tracking branch" 2010-11-03 09:19:10 -07:00
fetch-options.txt fetch/pull: Don't recurse into a submodule when commits are already present 2011-03-09 13:10:35 -08:00
fix-texi.perl
git-add.txt Merge branch 'vh/config-interactive-singlekey-doc' into maint 2011-05-31 12:01:06 -07:00
git-am.txt Merge branch 'tr/maint-mailinfo' 2012-01-29 13:18:53 -08:00
git-annotate.txt Documentation: use [verse] for SYNOPSIS sections 2011-07-06 14:26:26 -07:00
git-apply.txt doc: drop author/documentation sections from most pages 2011-03-11 10:59:16 -05:00
git-archimport.txt doc: drop author/documentation sections from most pages 2011-03-11 10:59:16 -05:00
git-archive.txt docs: put listed example commands in backticks 2011-08-04 15:49:13 -07:00
git-bisect-lk2009.txt Documentation: remove stray backslashes from "Fighting regressions" article 2010-08-20 14:16:51 -07:00
git-bisect.txt bisect: add support for bisecting bare repositories 2011-08-09 10:26:18 -07:00
git-blame.txt blame: add --line-porcelain output format 2011-05-09 15:27:50 -07:00
git-branch.txt Merge branch 'jc/request-pull-show-head-4' 2011-12-09 13:37:05 -08:00
git-bundle.txt doc: drop author/documentation sections from most pages 2011-03-11 10:59:16 -05:00
git-cat-file.txt doc: drop author/documentation sections from most pages 2011-03-11 10:59:16 -05:00
git-check-attr.txt Teach '--cached' option to check-attr 2011-09-22 16:38:22 -07:00
git-check-ref-format.txt Change check_refname_format() to reject unnormalized refnames 2011-10-05 13:45:30 -07:00
git-checkout-index.txt doc: drop author/documentation sections from most pages 2011-03-11 10:59:16 -05:00
git-checkout.txt git-checkout.txt: better docs for '--patch' 2011-05-05 13:31:11 -07:00
git-cherry-pick.txt revert: introduce --abort to cancel a failed cherry-pick 2011-11-22 18:16:59 -08:00
git-cherry.txt Documentation: use [verse] for SYNOPSIS sections 2011-07-06 14:26:26 -07:00
git-citool.txt Documentation: use [verse] for SYNOPSIS sections 2011-07-06 14:26:26 -07:00
git-clean.txt Documentation: clarify "git clean -e <pattern>" 2011-08-28 23:47:55 -07:00
git-clone.txt clone: allow --branch to take a tag 2012-01-16 16:26:26 -08:00
git-commit-tree.txt commit-tree: teach -m/-F options to read logs from elsewhere 2011-11-12 22:25:07 -08:00
git-commit.txt Merge branch 'jn/maint-doc-dashdash' into jn/doc-dashdash 2011-06-29 09:25:51 -07:00
git-config.txt config: add include directive 2012-02-17 07:59:55 -08:00
git-count-objects.txt Documentation: use [verse] for SYNOPSIS sections 2011-07-06 14:26:26 -07:00
git-credential-cache--daemon.txt credentials: add "cache" helper 2011-12-11 23:16:25 -08:00
git-credential-cache.txt credentials: add "cache" helper 2011-12-11 23:16:25 -08:00
git-credential-store.txt credentials: add "store" helper 2011-12-12 16:09:38 -08:00
git-cvsexportcommit.txt Documentation: use [verse] for SYNOPSIS sections 2011-07-06 14:26:26 -07:00
git-cvsimport.txt doc: drop author/documentation sections from most pages 2011-03-11 10:59:16 -05:00
git-cvsserver.txt docs: make sure literal "->" isn't converted to arrow 2011-05-26 22:15:38 -07:00
git-daemon.txt daemon: give friendlier error messages to clients 2011-10-15 21:15:06 -07:00
git-describe.txt doc: drop author/documentation sections from most pages 2011-03-11 10:59:16 -05:00
git-diff-files.txt Documentation: use [verse] for SYNOPSIS sections 2011-07-06 14:26:26 -07:00
git-diff-index.txt Documentation: use [verse] for SYNOPSIS sections 2011-07-06 14:26:26 -07:00
git-diff-tree.txt docs: fix some antique example output 2011-05-26 22:15:39 -07:00
git-diff.txt doc: drop author/documentation sections from most pages 2011-03-11 10:59:16 -05:00
git-difftool.txt documentation fix: git difftool uses diff tools, not merge tools. 2011-11-21 09:14:34 -08:00
git-fast-export.txt Merge branch 'sr/transport-helper-fix' 2011-08-01 15:00:14 -07:00
git-fast-import.txt Merge branch 'di/fast-import-ident' 2011-08-28 21:18:47 -07:00
git-fetch-pack.txt Documentation: use [verse] for SYNOPSIS sections 2011-07-06 14:26:26 -07:00
git-fetch.txt Documentation: use [verse] for SYNOPSIS sections 2011-07-06 14:26:26 -07:00
git-filter-branch.txt Documentation: git-filter-branch honors replacement refs 2011-07-21 12:54:55 -07:00
git-fmt-merge-msg.txt Document merge.branchdesc configuration variable 2012-02-23 11:20:15 -08:00
git-for-each-ref.txt for-each-ref: add split message parts to %(contents:*). 2011-09-08 13:56:19 -07:00
git-format-patch.txt Document negated forms of format-patch --to --cc --add-headers 2011-08-29 15:27:07 -07:00
git-fsck-objects.txt Documentation: use [verse] for SYNOPSIS sections 2011-07-06 14:26:26 -07:00
git-fsck.txt Merge branch 'jk/doc-fsck' 2011-12-22 11:27:27 -08:00
git-gc.txt Documentation: use [verse] for SYNOPSIS sections 2011-07-06 14:26:26 -07:00
git-get-tar-commit-id.txt Documentation: use [verse] for SYNOPSIS sections 2011-07-06 14:26:26 -07:00
git-grep.txt Document limited recursion pathspec matching with wildcards 2012-01-14 18:39:04 -08:00
git-gui.txt docs: put listed example commands in backticks 2011-08-04 15:49:13 -07:00
git-hash-object.txt doc: drop author/documentation sections from most pages 2011-03-11 10:59:16 -05:00
git-help.txt Documentation: use [verse] for SYNOPSIS sections 2011-07-06 14:26:26 -07:00
git-http-backend.txt ref namespaces: documentation 2011-07-11 09:35:46 -07:00
git-http-fetch.txt Mark http-fetch without -a as deprecated 2011-08-23 21:36:20 -07:00
git-http-push.txt Documentation: use [verse] for SYNOPSIS sections 2011-07-06 14:26:26 -07:00
git-imap-send.txt Documentation: use [verse] for SYNOPSIS sections 2011-07-06 14:26:26 -07:00
git-index-pack.txt index-pack: support multithreaded delta resolving 2012-05-07 15:48:15 -07:00
git-init-db.txt Documentation: use [verse] for SYNOPSIS sections 2011-07-06 14:26:26 -07:00
git-init.txt Documentation: use [verse] for SYNOPSIS sections 2011-07-06 14:26:26 -07:00
git-instaweb.txt Documentation: Link to gitweb(1) and gitweb.conf(5) in other manpages 2011-10-16 11:09:35 -07:00
git-log.txt Merge branch 'maint' 2011-08-30 12:35:51 -07:00
git-lost-found.txt Documentation: use [verse] for SYNOPSIS sections 2011-07-06 14:26:26 -07:00
git-ls-files.txt doc: drop author/documentation sections from most pages 2011-03-11 10:59:16 -05:00
git-ls-remote.txt ls-remote: the --exit-code option reports "no matching refs" 2011-05-18 14:37:46 -07:00
git-ls-tree.txt doc: drop author/documentation sections from most pages 2011-03-11 10:59:16 -05:00
git-mailinfo.txt Merge branch 'tr/maint-mailinfo' 2012-01-12 23:34:26 -08:00
git-mailsplit.txt Documentation: use [verse] for SYNOPSIS sections 2011-07-06 14:26:26 -07:00
git-merge-base.txt Merge branch 'vr/merge-base-doc' into maint 2011-05-16 16:38:46 -07:00
git-merge-file.txt docs: put listed example commands in backticks 2011-08-04 15:49:13 -07:00
git-merge-index.txt Documentation: use [verse] for SYNOPSIS sections 2011-07-06 14:26:26 -07:00
git-merge-one-file.txt Documentation: use [verse] for SYNOPSIS sections 2011-07-06 14:26:26 -07:00
git-merge-tree.txt Documentation: use [verse] for SYNOPSIS sections 2011-07-06 14:26:26 -07:00
git-merge.txt merge: use editor by default in interactive sessions 2012-01-23 14:34:55 -08:00
git-mergetool--lib.txt Merge branch 'jn/doc-dashdash' into maint 2011-09-11 21:52:18 -07:00
git-mergetool.txt Merge branch 'jm/mergetool-pathspec' into maint-1.7.6 2011-10-26 16:12:25 -07:00
git-mktag.txt Documentation: use [verse] for SYNOPSIS sections 2011-07-06 14:26:26 -07:00
git-mktree.txt Documentation: use [verse] for SYNOPSIS sections 2011-07-06 14:26:26 -07:00
git-mv.txt mv: honor --verbose flag 2011-12-12 11:52:31 -08:00
git-name-rev.txt doc: drop author/documentation sections from most pages 2011-03-11 10:59:16 -05:00
git-notes.txt git-notes.txt: clarify -C vs. copy and -F 2011-08-25 13:16:46 -07:00
git-p4.txt Merge branch 'maint' 2012-02-26 17:39:04 -08:00
git-pack-objects.txt remove doubled words, e.g., s/to to/to/, and fix related typos 2011-04-13 11:59:11 -07:00
git-pack-redundant.txt Documentation: use [verse] for SYNOPSIS sections 2011-07-06 14:26:26 -07:00
git-pack-refs.txt Documentation: use [verse] for SYNOPSIS sections 2011-07-06 14:26:26 -07:00
git-parse-remote.txt Documentation: use [verse] for SYNOPSIS sections 2011-07-06 14:26:26 -07:00
git-patch-id.txt Documentation: use [verse] for SYNOPSIS sections 2011-07-06 14:26:26 -07:00
git-peek-remote.txt Documentation: use [verse] for SYNOPSIS sections 2011-07-06 14:26:26 -07:00
git-prune-packed.txt Documentation: use [verse] for SYNOPSIS sections 2011-07-06 14:26:26 -07:00
git-prune.txt Documentation: use [verse] for SYNOPSIS sections 2011-07-06 14:26:26 -07:00
git-pull.txt Merge branch 'ab/pull-rebase-config' 2011-12-09 13:37:01 -08:00
git-push.txt push: add '--prune' option 2012-02-22 18:17:39 -08:00
git-quiltimport.txt doc: drop author/documentation sections from most pages 2011-03-11 10:59:16 -05:00
git-read-tree.txt Merge branch 'jh/fetch-head-update' 2012-01-06 12:44:01 -08:00
git-rebase.txt Merge branch 'mz/doc-rebase-abort' into maint 2011-08-16 11:41:28 -07:00
git-receive-pack.txt Sync with 1.7.6.2 2011-09-06 11:42:12 -07:00
git-reflog.txt Documentation: use [verse] for SYNOPSIS sections 2011-07-06 14:26:26 -07:00
git-relink.txt Documentation: use [verse] for SYNOPSIS sections 2011-07-06 14:26:26 -07:00
git-remote-ext.txt Documentation: use [verse] for SYNOPSIS sections 2011-07-06 14:26:26 -07:00
git-remote-fd.txt docs: put listed example commands in backticks 2011-08-04 15:49:13 -07:00
git-remote-helpers.txt (short) documentation for the testgit remote helper 2011-09-01 15:52:02 -07:00
git-remote-testgit.txt (short) documentation for the testgit remote helper 2011-09-01 15:52:02 -07:00
git-remote.txt Merge branch 'pj/remote-set-branches-usage-fix' into maint 2012-02-27 15:33:33 -08:00
git-repack.txt Documentation: use [verse] for SYNOPSIS sections 2011-07-06 14:26:26 -07:00
git-replace.txt doc: drop author/documentation sections from most pages 2011-03-11 10:59:16 -05:00
git-repo-config.txt Documentation: use [verse] for SYNOPSIS sections 2011-07-06 14:26:26 -07:00
git-request-pull.txt Documentation: use [verse] for SYNOPSIS sections 2011-07-06 14:26:26 -07:00
git-rerere.txt Documentation: use [verse] for SYNOPSIS sections 2011-07-06 14:26:26 -07:00
git-reset.txt builtin-reset: Documentation update 2011-11-23 13:24:54 -08:00
git-rev-list.txt show: --ignore-missing 2011-05-19 10:55:54 -07:00
git-rev-parse.txt rev-parse: add option --resolve-git-dir <path> 2011-08-16 11:04:31 -07:00
git-revert.txt revert: introduce --abort to cancel a failed cherry-pick 2011-11-22 18:16:59 -08:00
git-rm.txt docs: put listed example commands in backticks 2011-08-04 15:49:13 -07:00
git-send-email.txt send-email: document the --smtp-debug option 2012-02-27 10:29:24 -08:00
git-send-pack.txt Revert "Merge branch 'cb/maint-quiet-push' into maint" 2011-09-06 11:10:41 -07:00
git-sh-i18n--envsubst.txt Documentation/i18n: quote double-dash for AsciiDoc 2011-06-29 14:38:51 -07:00
git-sh-i18n.txt Merge branch 'jn/doc-dashdash' into maint 2011-09-11 21:52:18 -07:00
git-sh-setup.txt Merge branch 'tr/doc-sh-setup' into maint 2011-12-28 11:42:51 -08:00
git-shell.txt Documentation: use [verse] for SYNOPSIS sections 2011-07-06 14:26:26 -07:00
git-shortlog.txt doc: drop author/documentation sections from most pages 2011-03-11 10:59:16 -05:00
git-show-branch.txt Documentation: use [verse] for SYNOPSIS sections 2011-07-06 14:26:26 -07:00
git-show-index.txt Documentation: use [verse] for SYNOPSIS sections 2011-07-06 14:26:26 -07:00
git-show-ref.txt git-show-ref doc: typeset regexp in fixed width font 2012-01-13 09:50:45 -08:00
git-show.txt docs: put listed example commands in backticks 2011-08-04 15:49:13 -07:00
git-stage.txt doc: add missing git footers 2011-03-11 10:59:16 -05:00
git-stash.txt stash: Add --include-untracked option to stash and remove all untracked files 2011-06-26 12:50:46 -07:00
git-status.txt Merge branch 'jk/maint-1.7.2-status-ignored' into maint 2011-09-11 21:51:10 -07:00
git-stripspace.txt Update documentation for stripspace 2011-12-12 16:48:54 -08:00
git-submodule.txt Merge branch 'maint-1.7.7' into maint 2012-01-03 13:47:46 -08:00
git-svn.txt git svn dcommit: new option --interactive. 2011-10-16 08:12:26 +00:00
git-symbolic-ref.txt git symbolic-ref: documentation fix 2011-12-08 11:10:12 -08:00
git-tag.txt tag: add --points-at list option 2012-02-08 19:59:41 -08:00
git-tar-tree.txt docs: put listed example commands in backticks 2011-08-04 15:49:13 -07:00
git-tools.txt
git-unpack-file.txt Documentation: use [verse] for SYNOPSIS sections 2011-07-06 14:26:26 -07:00
git-unpack-objects.txt Documentation: use [verse] for SYNOPSIS sections 2011-07-06 14:26:26 -07:00
git-update-index.txt Merge branch 'maint-1.7.4' into maint-1.7.5 2011-10-26 16:08:14 -07:00
git-update-ref.txt Merge branch 'bw/log-all-ref-updates-doc' into maint 2011-08-16 11:41:28 -07:00
git-update-server-info.txt Documentation: use [verse] for SYNOPSIS sections 2011-07-06 14:26:26 -07:00
git-upload-archive.txt Documentation: use [verse] for SYNOPSIS sections 2011-07-06 14:26:26 -07:00
git-upload-pack.txt Merge branch 'js/ref-namespaces' 2011-08-17 17:35:38 -07:00
git-var.txt Documentation: use [verse] for SYNOPSIS sections 2011-07-06 14:26:26 -07:00
git-verify-pack.txt Documentation: use [verse] for SYNOPSIS sections 2011-07-06 14:26:26 -07:00
git-verify-tag.txt Documentation: use [verse] for SYNOPSIS sections 2011-07-06 14:26:26 -07:00
git-web--browse.txt Merge branch 'jn/doc-dashdash' into maint 2011-09-11 21:52:18 -07:00
git-whatchanged.txt docs: put listed example commands in backticks 2011-08-04 15:49:13 -07:00
git-write-tree.txt Documentation: use [verse] for SYNOPSIS sections 2011-07-06 14:26:26 -07:00
git.txt Git 1.7.9.2 2012-02-22 17:48:01 -08:00
gitattributes.txt Add built-in diff patterns for MATLAB code 2011-11-15 16:11:52 -08:00
gitcli.txt doc: drop author/documentation sections from most pages 2011-03-11 10:59:16 -05:00
gitcore-tutorial.txt Use correct grammar in diffstat summary line 2012-02-03 23:19:42 -08:00
gitcredentials.txt credentials: add "store" helper 2011-12-12 16:09:38 -08:00
gitcvs-migration.txt Documentation: use [verse] for SYNOPSIS sections 2011-07-06 14:26:26 -07:00
gitdiffcore.txt Documentation: use [verse] for SYNOPSIS sections 2011-07-06 14:26:26 -07:00
gitglossary.txt
githooks.txt Documentation/githooks: post-rewrite-copy-notes never existed 2011-01-10 09:09:02 -08:00
gitignore.txt doc: drop author/documentation sections from most pages 2011-03-11 10:59:16 -05:00
gitk.txt Documentation: use [verse] for SYNOPSIS sections 2011-07-06 14:26:26 -07:00
gitmodules.txt Merge branch 'jl/submodule-fetch-on-demand' 2011-04-04 15:02:01 -07:00
gitnamespaces.txt Documentation/gitnamespaces.txt: cater to older asciidoc 2011-09-16 09:20:23 -07:00
gitrepository-layout.txt Documentation: Grammar correction, wording fixes and cleanup 2011-08-23 21:35:47 -07:00
gitrevisions.txt Documentation: gitrevisions 2010-07-05 13:39:02 -07:00
gittutorial-2.txt Use correct grammar in diffstat summary line 2012-02-03 23:19:42 -08:00
gittutorial.txt Documentation: use [verse] for SYNOPSIS sections 2011-07-06 14:26:26 -07:00
gitweb.conf.txt gitweb: provide a way to customize html headers 2011-10-21 10:18:37 -07:00
gitweb.txt gitweb: Add gitweb(1) manpage for gitweb itself 2011-10-16 11:09:34 -07:00
gitworkflows.txt Documentation: use [verse] for SYNOPSIS sections 2011-07-06 14:26:26 -07:00
glossary-content.txt Merge branch 'nk/ref-doc' into maint 2011-08-01 14:44:24 -07:00
howto-index.sh
i18n.txt Documentation: spell 'git cmd' without dash throughout 2010-01-10 13:01:28 +01:00
install-doc-quick.sh docs: Update install-doc-quick 2011-11-08 13:37:10 -08:00
install-webdoc.sh install-webdoc: keep installed RelNotes-*.txt 2010-09-09 16:17:59 -07:00
mailmap.txt
Makefile pulling signed tag: add howto document 2012-01-18 15:17:27 -08:00
manpage-1.72.xsl
manpage-base-url.xsl.in Documentation: Avoid use of xmlto --stringparam 2009-12-05 10:03:49 -08:00
manpage-base.xsl
manpage-bold-literal.xsl
manpage-normal.xsl
manpage-quote-apos.xsl
manpage-suppress-sp.xsl
merge-config.txt merge: introduce merge.ff configuration variable 2011-05-06 15:12:30 -07:00
merge-options.txt Merge branch 'jc/doc-merge-options' 2012-02-26 23:05:42 -08:00
merge-strategies.txt Merge branch 'kb/merge-recursive-rename-threshold' 2010-10-26 21:54:04 -07:00
pretty-formats.txt pretty: give placeholders to reflog identity 2011-12-16 13:00:15 -08:00
pretty-options.txt Add log.abbrevCommit config variable 2011-05-18 12:40:15 -07:00
pull-fetch-param.txt Documentation: spell 'git cmd' without dash throughout 2010-01-10 13:01:28 +01:00
rev-list-options.txt Merge branch 'jn/doc-dashdash' into maint 2011-09-11 21:52:18 -07:00
revisions.txt revisions.txt: language improvements 2011-04-04 16:43:57 -07:00
sequencer.txt revert: introduce --abort to cancel a failed cherry-pick 2011-11-22 18:16:59 -08:00
SubmittingPatches SubmittingPathces: remove Cogito reference 2011-09-11 20:53:00 -07:00
urls-remotes.txt Documentation: spell 'git cmd' without dash throughout 2010-01-10 13:01:28 +01:00
urls.txt Documentation: spelling fixes 2010-07-20 16:59:17 -07:00
user-manual.conf
user-manual.txt user-manual: remote-tracking can be checked out, with detached HEAD 2010-11-03 09:20:48 -07:00