Boost logo

Boost :

From: Joel de Guzman (djowel_at_[hidden])
Date: 2003-01-09 19:15:03


----- Original Message -----
From: "Thorsten Ottosen" <nesotto_at_[hidden]>

> "Vincent Finn" <vincent_finn_at_[hidden]> wrote in message
> news:3E1D572F.8020808_at_agilent.com...
> > Hi,
> >
> > I assume this is the right place to post questions on Spirit now that it
> > is part of boost!
> > If not here, where?

There's a Spirit specific mailing list that you can subscribe to here:
https://lists.sourceforge.net/lists/listinfo/spirit-general
This mailing list is also mirrored in gmane NTTP portal :
news://news.gmane.org/gmane.comp.spirit.general

Although I try my best to keep abreast with the latest boost posts
in this list, sometimes, I get drowned and lose my pace. So there's
a slight chance that I (and some other Spirit developers) might not
notice your post. The Spirit list is relatively low traffic.

> > My question is about compile speed.
> > Is there any way to speed it up or at least seperate it from the project?
> >
> > I have added 2 parsers to my code base and the compile time (VC6) has
> > gone from 10 mins to 30mins :-(

Yes, this is the next battle. How big are your grammars? How many productions?
Are you using subrules? Better yet, can I see your code?

After the boost formal review, we are now concentrating on QOI
issues. The most glaring are:

1) Compile time diagnostics
2) Compile speed.

I think there's much room for improvement. We haven't started optimizing on
compile time yet (as they say, optimize later). This is the first time a
non-developer has noticed compile-speed problems.

It would be nice if you can send me a snapshot of your grammars (if possible)
with a short main() driver code that invokes the parser(s). I'll also need some
more info such as: processor speed and available memory as well as your
command line parameters. This will give me some clues on where the
compiler is choking.

At the very least, yes, you can separate the parsers from the project.
How about writing some wrappers that *hides* the grammars in
*.cpp files? You can for example have an opaque API in a header
such as:

    bool parse(char const* source);

or something more intricate depending on what you want to extract from
the source. This was done, for example, in the C++ lexer. See the
latest CVS snapshot. in directory: libs\spirit\example\application\cpp_lexer.
You'll notice that the cpp_lexer.hpp header does not include any Spirit
header. You can build separate DLLs or static libraries this way.

> I love Spirit for its syntax and ease of use, but I must also admit that
> compile times are´
> very long, even for debug builds.
>
> I think I read something about a debug mode in uBLAS which was used to
> reduce compilation
> time; Could something similar be done in Spirit?

Right now, I am looking at MPL style performance tweaks such as
loop unrolling. The Spirit subrule in particular, makes the compiler
crawl. JCAB has reported compile times in hours(!) when subrules
were being developed a few months ago. He has done some
tweaks that reportedly eased this, but the tweaks, as of now, does
not work on non-PTS compilers yet (i.e. CV6/7). And that's why
I asked whether Vincent is useing subrules. That might be the problem
and for that, I think I'll have a solution very soon.

About "debug mode in uBLAS", can you give me some links?

Thank you,
Joel de Guzman
joel_at_[hidden]
http://www.boost-consulting.com


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk