Thread (52 messages) 52 messages, 14 authors, 2016-06-15

Re: [PATCH] write-tree performance problems

From: Chris Mason <hidden>
Date: 2016-06-15 22:41:53

On Tuesday 19 April 2005 13:36, Linus Torvalds wrote:
On Tue, 19 Apr 2005, Chris Mason wrote:
quoted
I did a quick experiment with applying/commit 100 patches from the suse
kernel into a kernel git tree, which quilt can do in 2 seconds.  git
needs 1m5s.
Note that I don't think you want to replace quilt with git. The approaches
are totally different, and git does _not_ obviate the need for the quilt
kind of "patch testing".

In fact, git has all the same issues that BK had, and for the same
fundamental reason: if you do distributed work, you have to always
"append" stuff, and that means that you can never re-order anything after
the fact.
Very true, you can't replace quilt with git without ruining both of them.  But 
it would be nice to take a quilt tree and turn it into a git tree for merging 
purposes, or to make use of whatever visualization tools might exist someday.  
What I _would_ like is the ability to re-use an old tree, though. What you
really want to do is not pass in a set of directory names and just trust
that they are correct, but just pass in a directory to compare with, and
if the contents match, you don't need to write out a new one.

I'll try to whip up something that does what you want done, but doesn't
need (or take) any untrusted information from the user in the form "trust
me, it hasn't changed".
We already have a "trust me, it hasn't changed" via update-cache.  If it gets 
called wrong the tree won't reflect reality.  The patch doesn't change the 
write-tree default, but does enable you to give write-tree better information 
about the parts of the tree you want written back to git.

With that said, I hate the patch too.  I didn't see how to compare against the 
old tree without reading each tree object from the old tree, and that should 
be slower then what write-tree does now.  So I wimped out and made the quick 
patch that demonstrates the cause of the performance hit.

The "move .git/index to a tmpfs file" change should be easier though, and has 
a real benefit.  How do you feel about s|.git/index|.git/index_dir/index| in 
the sources?  This gives us the flexibility to link it wherever is needed.

-chris
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help