Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 28 May 2007 17:55:39 +0200
From:      Hartmut Brandt <hartmut.brandt@dlr.de>
To:        Stephen Montgomery-Smith <stephen@math.missouri.edu>
Cc:        ports@freebsd.org, hackers@freebsd.org
Subject:   Re: Looking for speed increases in "make index" and pkg_version for ports
Message-ID:  <465AFB7B.40105@dlr.de>
In-Reply-To: <465AF2CC.9020506@math.missouri.edu>
References:  <4659EF80.70100@math.missouri.edu> <465AB421.10802@dlr.de> <465AF2CC.9020506@math.missouri.edu>

next in thread | previous in thread | raw e-mail | index | archive | help
Stephen Montgomery-Smith wrote:
> Hartmut Brandt wrote:
> 
>> Having done a great deal of rewriting of make some two years ago I can
>> tell you that even a small change to make is a tough job testing-wise:
>> run all the combinations of !-j and -j <N> on all architectures and run
>> the change through the port-building cluster. That's a warning to start
>> with.
>>
>> Second I would start with careful profiling to find out where the
>> problem actually is. You might be surprised. As an example: several
>> times the idea came up to use a hash structure instead of linear lists
>> for make variables. I got a patch for this and - it makes absolutely no
>> difference performance-wise (well, there was some indication that
>> performance gets worse, but that was around or below noise level). With
>> careful I mean to find out who takes the time:
> 
> Yes, I must admit that I thought that a hash structure for the variables 
> would greatly increase the speed of make.  I rewrote it using Berkeley 
> databases, and like you said - absolutely no difference!!  I even tried 
> btrees.
> 


My guess at that time was that because there are actually many variable 
tables (one per target and the global one) and only a small number of 
variables in most of the tables the initialisation overhead outweights 
what you win through the hashing.

As for the profiling - I did some profiling on buildworld then. From the 
several hours a buildworld took only one or two minutes were used by all 
the makes. At this point I stopped optimizing make :-) (I don't remember 
the exact numbers - that was two or three years ago).

harti



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?465AFB7B.40105>