On Fri, 13 Dec 2002, Kerr Shannon-SKERR1 wrote:
> > To me, this sounds like suboptimal planning. There's no particular reason
Sorry if this came across stronger than it was meant to be. English is
not my first language, no matter how much practice I've gained in it...
[...]
> Suboptimal planning? You can make a statement like that without even
> knowing our build process? No offense, but before you make a comment like
> that, I would think you'd need a little more information about the current
> process.
That's why I said it "sounded like" not quite optimal planning of that
procedure --- because it was an assessment based on obviously incomplete
information. I was under the impression that the time you wanted to
minize was the total time from start of build to completion of all
subtasks, and I failed to imagine how cscope.out building time could
currently be the limiting part of that. I.e. as long as it's done before
the actual compile and link, nor does it delay the start of that, who
cares how long it takes?
> Actually, the building of the cscope.out can be and is run in parallel with
> other tasks, so I'm not sure what made you think that it wasn't.
Nothing but lack of any statement to the contrary...
But let's set the heated part of this discussion aside, and return to hard
software design, shall we?
Cscope database building from scratch, in -q mode, really is split into
two separate phases:
1) generation of cscope.out, the main database
2) generation of the inverted index into that (cscope.out.{po,in})
Now, if linking of several databases were to be added, this could be
done in several ways:
*) keep individual cscope.out's, but construct a common inverted index.
Possible, but this would require modifying the innards of invlib.c.
I don't think anyone in the team would dare trying that road ---
invlib is an absolute maintenance nightmare. This may be open to
re-evaluation once we managed to replace this by Berkeley DB, as
planned.
*) keep individual cscope.out's, each with their own inverted index.
This would increase -q mode search times proportional to the number
of cscope.out's involved, and thus not be a very useful approach.
*) combine the cscope.out's after generation, then generate a common
inverted index. This should work, but it wouldn't gain anything,
since cscope.out build time is linear in input size. It'll actually
be slower, because common headers would be parsed repeatedly, and the
combination process would have to eliminate those duplicates.
--
Hans-Bernhard Broeker (broeker@...)
Even if all the snow were burnt, ashes would remain.
|