From: Pierre Habouzit <madcoder@debian.org>
To: "Shawn O. Pearce" <spearce@spearce.org>
Cc: git@vger.kernel.org, Scott Chacon <schacon@gmail.com>
Subject: Re: libgit2 - a true git library
Date: Sun, 02 Nov 2008 10:25:55 +0100 [thread overview]
Message-ID: <20081102092555.GC4066@artemis> (raw)
In-Reply-To: <20081102015611.GH15463@spearce.org>
[-- Attachment #1: Type: text/plain, Size: 1904 bytes --]
On Sun, Nov 02, 2008 at 01:56:11AM +0000, Shawn O. Pearce wrote:
> Pierre Habouzit <madcoder@debian.org> wrote:
> > For types that _will_ be in the tight loops, we must make the types
> > explicit or it'll bite us hard performance-wise. I'm thinking what is
> > "struct object" or "struct commit" in git.git. It's likely that we will
> > loose a *lot* of those types are opaque.
>
> Yes, but I'm arguing they should be opaque to the application, and
> visible to the library. Today the application is suffering from
> massive fork+exec overhead. I really don't give a damn if the
> application's compiler has to deal with a function call to read
> from a private member of an opaque type. Its still thousands of
> CPU instructions less per operation.
The problem is not the function call, it's really cheap on modern CPUs.
The problem is that across a function call the compiler cannot make
some kind of optimizations and _that_ isn't cheap.
For example, pointers whose value have been loaded from the store into a
register have to be loaded again. A function call trashes all the
registers, etc...
> Come back to me a year after libgit2 has been widely deployed on
> Linux distros and we have multiple applications linking to it.
> Lets talk then about the harmful performance problems caused by
> making these types opaque to the application. About that time
> we'll also be talking about how great pack v4 is and why its a good
> thing those types were opaque, as we didn't have to break the ABI
> to introduce it.
Well I fear it'll be more than a few percent harm, and I can already see
Linus argue against the switch to libgit2 for git-core because it lost
2% performances ;P
--
·O· Pierre Habouzit
··O madcoder@debian.org
OOO http://www.madism.org
[-- Attachment #2: Type: application/pgp-signature, Size: 197 bytes --]
next prev parent reply other threads:[~2008-11-02 9:27 UTC|newest]
Thread overview: 83+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-10-31 17:07 libgit2 - a true git library Shawn O. Pearce
2008-10-31 17:28 ` Pieter de Bie
2008-10-31 17:29 ` Pieter de Bie
2008-10-31 17:47 ` Pierre Habouzit
2008-10-31 18:41 ` Shawn O. Pearce
2008-10-31 18:54 ` Pierre Habouzit
2008-10-31 19:57 ` Shawn O. Pearce
2008-10-31 20:12 ` Pierre Habouzit
2008-10-31 20:05 ` Junio C Hamano
2008-10-31 21:58 ` Shawn O. Pearce
2008-11-01 17:30 ` Pierre Habouzit
2008-11-01 18:44 ` Andreas Ericsson
2008-11-01 18:48 ` Pierre Habouzit
2008-11-01 20:29 ` Shawn O. Pearce
2008-11-01 21:58 ` Andreas Ericsson
2008-11-02 1:50 ` Shawn O. Pearce
2008-11-03 10:17 ` Andreas Ericsson
2008-11-02 1:56 ` Shawn O. Pearce
2008-11-02 9:25 ` Pierre Habouzit [this message]
2008-10-31 20:24 ` Nicolas Pitre
2008-10-31 20:29 ` david
2008-10-31 20:56 ` Nicolas Pitre
2008-10-31 21:43 ` Shawn O. Pearce
2008-10-31 21:50 ` Shawn O. Pearce
2008-10-31 21:51 ` Pierre Habouzit
2008-10-31 21:31 ` Pierre Habouzit
2008-10-31 22:10 ` Nicolas Pitre
2008-11-01 10:52 ` Andreas Ericsson
2008-10-31 23:24 ` Pieter de Bie
2008-10-31 23:28 ` Shawn O. Pearce
2008-10-31 23:49 ` Junio C Hamano
2008-11-01 0:02 ` Pierre Habouzit
2008-11-01 0:19 ` Shawn O. Pearce
2008-11-01 1:02 ` Pierre Habouzit
2008-11-01 0:13 ` Shawn O. Pearce
2008-11-01 1:15 ` Nicolas Pitre
2008-11-01 1:19 ` Shawn O. Pearce
2008-11-01 1:45 ` Nicolas Pitre
2008-11-01 1:52 ` Shawn O. Pearce
2008-11-01 2:26 ` Johannes Schindelin
2008-11-01 11:01 ` Pierre Habouzit
2008-11-01 13:50 ` Nicolas Pitre
2008-11-01 17:01 ` Pierre Habouzit
2008-11-01 20:26 ` Johannes Schindelin
2008-10-31 23:14 ` Junio C Hamano
2008-10-31 23:33 ` Pierre Habouzit
2008-10-31 23:41 ` Shawn O. Pearce
2008-10-31 23:56 ` Jakub Narebski
2008-11-01 0:41 ` david
2008-11-01 1:00 ` Shawn O. Pearce
2008-11-01 1:04 ` david
2008-11-01 1:08 ` Pierre Habouzit
2008-11-01 1:33 ` Nicolas Pitre
2008-11-01 1:38 ` Pierre Habouzit
2008-11-01 1:49 ` Nicolas Pitre
2008-11-01 1:43 ` Shawn O. Pearce
2008-11-01 1:53 ` Nicolas Pitre
2008-11-01 22:57 ` Shawn O. Pearce
2008-11-02 0:26 ` Scott Chacon
2008-11-02 1:07 ` Scott Chacon
2008-11-02 1:36 ` Shawn O. Pearce
2008-11-02 5:09 ` David Brown
2008-11-03 16:20 ` Shawn O. Pearce
2008-11-01 1:06 ` Pierre Habouzit
2008-11-01 1:36 ` david
2008-10-31 20:24 ` Brian Gernhardt
2008-10-31 21:59 ` Andreas Ericsson
2008-10-31 22:01 ` Shawn O. Pearce
2008-10-31 22:51 ` Junio C Hamano
2008-11-01 11:17 ` Andreas Ericsson
2008-10-31 23:22 ` Johannes Schindelin
2008-10-31 23:18 ` Bruno Santos
2008-10-31 23:25 ` Shawn O. Pearce
2008-11-01 19:18 ` Andreas Ericsson
2008-11-01 20:42 ` Shawn O. Pearce
2008-11-02 2:30 ` Johannes Schindelin
2008-11-02 9:19 ` Pierre Habouzit
2008-11-03 13:08 ` Andreas Ericsson
2008-11-08 13:26 ` Steve Frécinaux
2008-11-08 14:35 ` Andreas Ericsson
2008-11-08 17:27 ` Pierre Habouzit
2008-11-09 10:17 ` Andreas Ericsson
2008-11-09 21:02 ` Shawn O. Pearce
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=20081102092555.GC4066@artemis \
--to=madcoder@debian.org \
--cc=git@vger.kernel.org \
--cc=schacon@gmail.com \
--cc=spearce@spearce.org \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.