]> Sergey Matveev's repositories - public-inbox.git/commit
git: async batch interface
authorEric Wong <e@80x24.org>
Fri, 29 Nov 2019 12:25:05 +0000 (12:25 +0000)
committerEric Wong <e@80x24.org>
Thu, 12 Dec 2019 03:51:14 +0000 (03:51 +0000)
commit46baf956987dca495ed44b1050e64939fae5c8ab
tree5ec1167e3db591de27a108f314ce8fdda8ad921b
parent73fe3421f1ecbdc83600d5acfc643c33dbb9a0f2
git: async batch interface

This is a transitionary interface which does NOT require an
event loop.  It can be plugged into in current synchronous code
without major surgery.

It allows HTTP/1.1 pipelining-like functionality by taking
advantage of predictable and well-specified POSIX pipe semantics
by stuffing multiple git cat-file requests into the --batch pipe

With xt/git_async_cmp.t and GIANT_GIT_DIR=git.git, the async
interface is 10-25% faster than the synchronous interface since
it can keep the "git cat-file" process busier.

This is expected to improve performance on systems with slower
storage (but multiple cores).
MANIFEST
lib/PublicInbox/Git.pm
xt/git_async_cmp.t [new file with mode: 0644]