From: Nguyen Thai Ngoc Duy <pclouds@gmail.com>
To: "René Scharfe" <rene.scharfe@lsrfire.ath.cx>
Cc: Junio C Hamano <gitster@pobox.com>, Jeff King <peff@peff.net>,
John Hsing <tsyj2007@gmail.com>,
Matthieu Moy <matthieu.moy@grenoble-inp.fr>,
git@vger.kernel.org
Subject: Re: [PATCH] read-cache.c: fix index memory allocation
Date: Tue, 25 Oct 2011 10:34:27 +1100 [thread overview]
Message-ID: <20111024233427.GA24956@duynguyen-vnpc.dektech.internal> (raw)
In-Reply-To: <4EA5DFB2.3050406@lsrfire.ath.cx>
On Mon, Oct 24, 2011 at 11:59:14PM +0200, René Scharfe wrote:
> Am 24.10.2011 09:07, schrieb Junio C Hamano:
> > Thanks.
> >
> > This approach may be the most appropriate for the maintenance track, but
> > for the purpose of going forward, I wonder if we really want to keep the
> > "estimate and allocate a large pool, and carve out individual pieces".
> >
> > This bulk-allocate dates back to the days when we didn't have ondisk vs
> > incore representation differences, IIRC, and as the result we deliberately
> > leak cache entries whenever an entry in the index is replaced with a new
> > one. Does the overhead to allocate individually really kill us that much
> > for say a tree with 30k files in it?
>
> Something like this (applies to master)? Very basic testing didn't show
> any slowdown of git status in the Linux repo.
"git status" is slow. If your changes causes slowdown, it won't likely
stand out while other fast commands may show (read_cache() is used in
nearly all commands). So I tested using the following patch.
The result on linux-2.6 shows about 10-20 us slowdown per each
read_cache() call (30-40 us on webkit, ~50k files) I think your patch
is good enough :-)
-- 8< --
diff --git a/Makefile b/Makefile
index 3139c19..c8b47bc 100644
--- a/Makefile
+++ b/Makefile
@@ -444,6 +444,7 @@ TEST_PROGRAMS_NEED_X += test-string-pool
TEST_PROGRAMS_NEED_X += test-subprocess
TEST_PROGRAMS_NEED_X += test-svn-fe
TEST_PROGRAMS_NEED_X += test-treap
+TEST_PROGRAMS_NEED_X += test-read-cache
TEST_PROGRAMS = $(patsubst %,%$X,$(TEST_PROGRAMS_NEED_X))
diff --git a/test-read-cache.c b/test-read-cache.c
index e69de29..1ad80a0 100644
--- a/test-read-cache.c
+++ b/test-read-cache.c
@@ -0,0 +1,14 @@
+#include "cache.h"
+
+int main(int argc, char **argv)
+{
+ struct timeval tv1, tv2;
+ int i;
+
+ gettimeofday(&tv1, NULL);
+ for (i = 0; i < 100; i++)
+ read_cache();
+ gettimeofday(&tv2, NULL);
+ printf("%lu\n", (unsigned long)(tv2.tv_usec - tv1.tv_usec));
+ return 0;
+}
-- 8< --
next prev parent reply other threads:[~2011-10-24 23:36 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-10-22 0:20 a bug when execute "git status" in git version 1.7.7.431.g89633 John Hsing
2011-10-23 8:25 ` Matthieu Moy
2011-10-23 8:35 ` John Hsing
2011-10-23 13:25 ` René Scharfe
2011-10-23 14:28 ` René Scharfe
2011-10-23 16:29 ` Jeff King
2011-10-23 17:50 ` René Scharfe
2011-10-24 1:01 ` [PATCH] read-cache.c: fix index memory allocation René Scharfe
2011-10-24 7:07 ` Junio C Hamano
2011-10-24 15:59 ` René Scharfe
2011-10-24 21:59 ` René Scharfe
2011-10-24 23:34 ` Nguyen Thai Ngoc Duy [this message]
2011-10-25 0:01 ` Nguyen Thai Ngoc Duy
2011-10-25 18:00 ` René Scharfe
2011-10-25 16:24 ` Junio C Hamano
2011-10-24 7:28 ` Junio C Hamano
2011-10-24 15:52 ` René Scharfe
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=20111024233427.GA24956@duynguyen-vnpc.dektech.internal \
--to=pclouds@gmail.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=matthieu.moy@grenoble-inp.fr \
--cc=peff@peff.net \
--cc=rene.scharfe@lsrfire.ath.cx \
--cc=tsyj2007@gmail.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