Re: Performance issues with Cons
[email protected] Fri, 4 Oct 2002 14:23:17 -0700
| Newsgroups | gmane.comp.gnu.cons.general |
|---|---|
| Message-ID | <[email protected]> |
The performance penalty is the cost of correctness. Cons is analyzing every dependency before it does anything. So, you can avoid it by trimming dependencies. That's what we do. This is the technique that a developer will use when developing their code. For integration builds, you then let Cons evaluate all dependenices to make sure you haven't broken anything. Sure, gnu-make might start working right away, but most people do not write their make files correctly so gnu-make is not evaluating all dependencies. There is a paper regarding recursive make that discusses the issues. Not only that, but gnu-make is a half-assed script language, where perl is not. There isn't any problem that cannot be solved with perl. You might find the scripting capabilities of gnu-make lacking. We looked at using gnu-make, but we got our Cons prototype working so quickly we abandoned the thought. David [email protected] Sent by: [email protected] 10/02/2002 08:45 AM To: [email protected] cc: (bcc: David Weidenkopf/ATL-BTL/MS/PHILIPS) Subject: Performance issues with Cons Classification: Hi all, I don't know if anyone else is seeing this, but we're finding that cons is pretty slow... We've got a moderately sized project (currently generating about 2500 object files, from a mixture of C and C++ source files), and it's taking something like 15-20 seconds for cons to actually start compiling any files, on a pretty zippy dual UltraSparc-III - 900Mhz, I think... Now, our include heirachy is pretty bad - a lot of source files include a lot more header files than they really need to... So I assume that most of that time is spent building up and checking the dependancies... I'm hoping to fix the include heirarchy, but it's not going to be a quick thing, and I'm not positive how much that's going to speed up cons... Has anyone done any work on improving this? I haven't spent much time looking at the code inside cons, so I don't know if the code itself could be made more effiicient, but it seems like it should be possible to cache the include dependancies somewhere, and only rebuild them when a source file changes... The delay is getting annoying for developers, and I'm having trouble defending the decision to use cons instead of gnu-make with some kind of 'make depend'... Any suggestions on how I could speed things up? Does anyone know if scons handles this kind of situation any better? Thanks! Warren _______________________________________________ [email protected] http://mail.gnu.org/mailman/listinfo/cons-discuss Cons URL: http://www.dsmit.com/cons/