From: Shawn Pearce <spearce@spearce.org>
To: Junio C Hamano <gitster@pobox.com>
Cc: git@vger.kernel.org
Subject: Re: [PATCH 00/11] writing out a huge blob to working tree
Date: Sun, 15 May 2011 17:47:58 -0700 [thread overview]
Message-ID: <BANLkTinCRbDa1ic05SKzSOadicOKfwV04Q@mail.gmail.com> (raw)
In-Reply-To: <1305505831-31587-1-git-send-email-gitster@pobox.com>
On Sun, May 15, 2011 at 17:30, Junio C Hamano <gitster@pobox.com> wrote:
> Traditionally, git always read the full contents of an object in memory
> before performing various operations on it, e.g. comparing for diff,
> writing it to the working tree, etc. A huge blob that you cannot fit
> in memory was very cumbersome to handle.
,,,
> Interested parties may want to measure the performance impact of the last
> three patches. The series deliberately ignores core.bigfileThreashold and
> let small and large blobs alike go through the streaming_write_entry()
> codepath, but it _might_ turn out that we would want to use the new code
> only for large-ish blobs.
FWIW in JGit we control this by looking at the object size and
comparing to the variable core.streamFileThreshold. For any object
below this size we allocate the buffer, unpack into it, and return the
buffer to the caller. Only objects above the size use the streaming
code paths.
There is a performance difference, at least for us in Java. Most of
the overhead seems to be due to running zlib inflate() with a tiny
buffer size rather than the full destination buffer. This probably has
to do with the cost associated with jumping from the Java bytecode
through JNI to the libz library.
--
Shawn.
next prev parent reply other threads:[~2011-05-16 0:48 UTC|newest]
Thread overview: 49+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-05-16 0:30 [PATCH 00/11] writing out a huge blob to working tree Junio C Hamano
2011-05-16 0:30 ` [PATCH 01/11] packed_object_info_detail(): do not return a string Junio C Hamano
2011-05-17 0:45 ` Thiago Farina
2011-05-17 2:36 ` Junio C Hamano
2011-05-16 0:30 ` [PATCH 02/11] sha1_object_info_extended(): expose a bit more info Junio C Hamano
2011-05-16 0:30 ` [PATCH 03/11] sha1_object_info_extended(): hint about objects in delta-base cache Junio C Hamano
2011-05-16 0:40 ` Shawn Pearce
2011-05-16 0:30 ` [PATCH 04/11] unpack_object_header(): make it public Junio C Hamano
2011-05-16 0:30 ` [PATCH 05/11] write_entry(): separate two helper functions out Junio C Hamano
2011-05-16 0:30 ` [PATCH 06/11] streaming: a new API to read from the object store Junio C Hamano
2011-05-18 8:09 ` Jeff King
2011-05-19 1:52 ` Junio C Hamano
2011-05-16 0:30 ` [PATCH 07/11] streaming_write_entry(): use streaming API in write_entry() Junio C Hamano
2011-05-16 0:30 ` [PATCH 08/11] streaming_write_entry(): support files with holes Junio C Hamano
2011-05-16 10:53 ` Nguyen Thai Ngoc Duy
2011-05-16 14:39 ` Junio C Hamano
2011-05-17 1:18 ` Nguyen Thai Ngoc Duy
2011-05-17 5:23 ` Junio C Hamano
2011-05-16 13:03 ` Thiago Farina
2011-05-16 0:30 ` [PATCH 09/11] streaming: read non-delta incrementally from a pack Junio C Hamano
2011-05-16 0:58 ` Shawn Pearce
2011-05-16 5:00 ` Junio C Hamano
2011-05-16 0:30 ` [PATCH 10/11] sha1_file.c: expose helpers to read loose objects Junio C Hamano
2011-05-16 0:30 ` [PATCH 11/11] streaming: read loose objects incrementally Junio C Hamano
2011-05-16 0:47 ` Shawn Pearce [this message]
2011-05-18 6:41 ` [PATCH 00/11] writing out a huge blob to working tree Jeff King
2011-05-18 7:08 ` Jeff King
2011-05-18 7:50 ` Jeff King
2011-05-18 15:12 ` Junio C Hamano
2011-05-18 8:17 ` Jeff King
2011-05-19 21:33 ` [PATCH v2 " Junio C Hamano
2011-05-19 21:33 ` [PATCH v2 01/11] packed_object_info_detail(): do not return a string Junio C Hamano
2011-05-19 21:33 ` [PATCH v2 02/11] sha1_object_info_extended(): expose a bit more info Junio C Hamano
2011-05-19 21:33 ` [PATCH v2 03/11] sha1_object_info_extended(): hint about objects in delta-base cache Junio C Hamano
2011-05-20 23:05 ` René Scharfe
2011-05-21 1:49 ` Junio C Hamano
2011-05-19 21:33 ` [PATCH v2 04/11] unpack_object_header(): make it public Junio C Hamano
2011-05-19 21:33 ` [PATCH v2 05/11] write_entry(): separate two helper functions out Junio C Hamano
2011-05-19 21:33 ` [PATCH v2 06/11] streaming: a new API to read from the object store Junio C Hamano
2011-05-20 23:05 ` René Scharfe
2011-05-21 1:49 ` Junio C Hamano
2011-05-19 21:33 ` [PATCH v2 07/11] streaming_write_entry(): use streaming API in write_entry() Junio C Hamano
2011-05-20 22:52 ` Junio C Hamano
2011-05-19 21:33 ` [PATCH v2 08/11] streaming_write_entry(): support files with holes Junio C Hamano
2011-05-19 21:33 ` [PATCH v2 09/11] streaming: read non-delta incrementally from a pack Junio C Hamano
2011-05-19 21:33 ` [PATCH v2 10/11] sha1_file.c: expose helpers to read loose objects Junio C Hamano
2011-05-19 21:33 ` [PATCH v2 11/11] streaming: read loose objects incrementally Junio C Hamano
2011-05-19 21:44 ` [Not A PATCH v2 02/11] interdiff Junio C Hamano
2011-05-19 22:21 ` [PATCH v2 00/11] writing out a huge blob to working tree Jeff King
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=BANLkTinCRbDa1ic05SKzSOadicOKfwV04Q@mail.gmail.com \
--to=spearce@spearce.org \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).