All of lore.kernel.org
 help / color / mirror / Atom feed
From: Robin Rosenberg <robin.rosenberg@dewire.com>
To: "Shawn O. Pearce" <spearce@spearce.org>
Cc: "Roger C. Soares" <rogersoares@intelinet.com.br>, git@vger.kernel.org
Subject: Re: faster egit history page and a pure java "gitk"
Date: Mon, 24 Mar 2008 14:06:54 +0000	[thread overview]
Message-ID: <200803241406.54759.robin.rosenberg@dewire.com> (raw)
In-Reply-To: <20080324092726.GQ8410@spearce.org>

Den Monday 24 March 2008 09.27.26 skrev Shawn O. Pearce:
> OK, so I decided a few weeks back that the history page was not fast
> enough.  I think I've spent the past 3 weeks writing true revision
> machinary for jgit, and now connecting it up to a UI visualizer.
>
>   git://repo.or.cz/egit/spearce.git plotter
>
> The history page has been completely replaced.  I saw Roger has
> some patches against the current history page.  :-|
The page was very messy. It was my first attempt at anything ui in
Eclipse at all. Like a child drawing his first picture of a person :)

> There are huge benefits to this infrastructure:
>
>  * Fast as snot.  We are literally just 10-20 ms slower than C Git
>    on the same hardware, same repository, for the same tree.  That
>    is pretty damn good, given that we are in Java.

On what repo is that measured?

As for Java speed, it is some two to three times slower than C on array 
intensive stuff. On just about anything else the difference is less.

The "Micro-optimize pack index v2 findOffset routine" commit suprises me
a little. The rearranged ObjectId layout does not. Could we do even better
using two long's and one int?

>  * Faster than gitk.  Yes, really.  My plot algorithm is not nearly
>    as good as Paulus' work, but I think its better than what we
>    have right now.
gitk has to talk to externa processess and parse things so I'm not surprised
we'd come to it some day.

>  * Nearly instant results without path limiter(s).  If the graph
>    doesn't require parent rewrites we are able to show results
>    almost immediately, and fill in the rest incrementally from
>    the background job.
>
>  * Lower memory usage.  By massive amounts.  I can't even begin to
>    tell you how much different it is.  Histories that we could not
>    show before can now be shown in <20M.  Our memory usage is much
>    lower than that of gitk.
This probably is related to speed too because the gc got to do a lot
of work.

>  * Multiple path limiters.  You can select more than one resource
>    (or directory!) at once and get the combined history for
>    all of them at once.  This is basically the same path limiter
>    algorithm that C Git/gitk rely upon for the same sort of query.
>    It is still limited to a single-repository, but I think we could
>    easily extend it to allow multiple-repository unions.  :-)
You mean submodules, real and "virtual" ?

>  * Common AWT and SWT drawing.  Most of the UI visualization code
>    is implemented in shared code that has no AWT or SWT specifics
>    about it.  This makes the renderer completely portable.  I have
>    both an AWT and an SWT implementation running (compare from the
>    command line "jgit glog HEAD" to the history view in Eclipse).
Sweet. Needs some polishing though. At least under Linux and small screens
with lots of pixels.

>  * Faster "RevCommit" class.  This class mostly replaces the older
>    "Commit" class.  Accessing data out of a RevCommit can be much
>    quicker than out of a Commit, plus a RevCommit gets the encoding
>    of the author, committer and message correct more of the time.
>    The downside is you can only get a RevCommit from a RevWalk,
>    or one of its subclasses.

Very impressive work Mr Shawn. I'll walk through and publish.

-- robin

  parent reply	other threads:[~2008-03-24 14:08 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-03-24  9:27 faster egit history page and a pure java "gitk" Shawn O. Pearce
2008-03-24 13:33 ` Roger C. Soares
2008-03-24 14:10   ` Robin Rosenberg
2008-03-25  4:43   ` Shawn O. Pearce
2008-03-25 12:33     ` Roger C. Soares
2008-03-24 14:06 ` Robin Rosenberg [this message]
2008-03-25  5:10   ` Shawn O. Pearce
2008-03-24 14:31 ` faster egit history page and a pure java "gitk" so Robin Rosenberg
2008-03-25  4:48   ` Shawn O. Pearce
2008-03-25  5:07 ` faster egit history page and a pure java "gitk" Roger C. Soares
2008-03-25  5:36   ` Shawn O. Pearce
2008-03-25  8:09     ` Shawn O. Pearce
2008-03-25 13:46     ` Roger C. Soares
2008-03-25 19:48       ` Robin Rosenberg
2008-03-26  1:37     ` Roger C. Soares
2008-03-26  4:52       ` 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=200803241406.54759.robin.rosenberg@dewire.com \
    --to=robin.rosenberg@dewire.com \
    --cc=git@vger.kernel.org \
    --cc=rogersoares@intelinet.com.br \
    --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.