Re: Extremely long build times



In article <46af95a8$1@xxxxxxxxxxxxxxxxxxxxxx>, Allen Bauer (CodeGear)
says...

There are also internal limitations in the compiler which can cause
problems if one were to have a deeply recursive set of units. As a
codebase grows, one can lose sight of the overall "reference web" of
units and suddenly trip into this limitation. It is often manifests as
a significant performance degredation and seemingly random error
messages about recursive uses.

I would have thought/hoped that any recursive unit references would
consistently yield an appropriate error! (and ime they do)

;)


I am working on a (huge) project (Delphi 5 - so it's nothing new!) where
build times hit the floor when the number of otherwise recursion safe
references (i.e. in implementation sections) back to a particularly
large "hub" unit from units used by that "hub" reaches a critical mass.

Without doing a particularly forensic investigation I had always
presumed that the problem was that the compiler was finding itself
repeatedly referred back to the interface section of the "hub" unit,
each time having to deal with the unit references it finds until it has
finally waded through the interface uses list.


unit Hub;

uses
UnitA,
UnitB,
UnitC;


If Units A, B and C all reference Hub in their implementation sections,
how does the compiler handle this?

I may be a million miles wide of the mark, but I have always imagined
something like...

Hub
-> UnitA
-> Hub
-> (in UnitA - skip it)
-> UnitB
-> Hub
-> (in UnitA - skip it)
-> (in UnitB - skip it)
-> UnitC


--
JS
TWorld.Create.Free;
.



Relevant Pages

  • Re: Extremely long build times
    ... I would have thought/hoped that any recursive unit references would ... -> (in UnitA - skip it) ... Unit B's compilation is "put-aside" since Unit A isn't complete, ... up-to-date and so this recursion never happens. ...
    (borland.public.delphi.non-technical)
  • Re: C# cant find "Microsoft.Web.Services"
    ... > Rigth click on the References ... > On the .NET Tab Find Microsoft.Web.Services.dll ... >> To understand recursion, ... Prev by Date: ...
    (microsoft.public.dotnet.languages.csharp)
  • Re: Saving recursive objects to disc. cPickle want work.
    ... > cPickle doesn't like recursion. ... as "objects that contain references to themselves" can't be handled by ... but that pickle and cPickle should be fine: "pickle stores ...
    (comp.lang.python)
  • Re: how to see the list of reference of APIs of an library in my exe
    ... because the references aren't made to a particular ... is one major difference between Win32 and ELF shared library models). ... And i want to know whether printf() is ... In order to understand recursion you must first understand recursion. ...
    (comp.os.linux.development.system)