FYI. Joris's messages seem to have been blocked...
Please, CC: Joris when replying.
Joris --
It might help if you can provide information about the version of GCC
you're using. You might also want to try
http://gcc.gnu.org/bugzilla/
That way, your report will be recorded in the PR database.
--- Begin Message ---
Salut Gabriel,
J'ai essaye plusieurs fois de poster le message ci-dessous
sur la liste gcc, mais c'est systematiquement refuse.
Peut-etre que tu peux le poster et me forwarder d'eventuelles reponses.
Je me suis desinscrit de la liste, car il y avait trop de messages.
A+, Joris
---------- Forwarded message ----------
Date: Tue, 9 Nov 2004 12:00:47 +0100 (CET)
From: Joris van der Hoeven <[EMAIL PROTECTED]>
To: [EMAIL PROTECTED]
Subject: Bad compile time complexity for large files ??? (fwd)
Hi,
I have suscribed to the gcc mailing list in order to send
the message below, but it keeps being rejected. Why?
Joris
---------- Forwarded message ----------
Date: Tue, 9 Nov 2004 11:36:29 +0100 (CET)
From: Joris van der Hoeven <[EMAIL PROTECTED]>
To: [EMAIL PROTECTED]
Subject: Bad compile time complexity for large files ???
Hi *,
I am using g++ for compiling automatically generated glue files
for another language (mathemagix). These glue files tend to become
quite big when I want to glue big C++ libraries. More precisely,
they contain a lot of small methods and routines, like
--------------------------------------------------
[...]
ext_inst
ext_mml_vector_rep::gen_timesassign (ext_inst &arg_1, ext_inst arg_2) {
ext_type save_1 = ext_cur_1;
ext_cur_1 = x_1;
ext_inst ret = convert<ext_inst, mml_vector<ext_inst_1> >
(convert<mml_vector<ext_inst_1>&, ext_inst& > (arg_1) *=
convert<mml_vector<ext_inst_1>, ext_inst> (arg_2));
ext_cur_1 = save_1;
return ret;
}
[...]
static mmx::generic
FUN_29 (mmx::generic g) {
return mmx::as_mmx<double, TID> (mmx::as_cpp<double&, TID> (g[1]) *=
mmx::as_cpp<double, TID> (g[2]));
}
[...]
--------------------------------------------------
The number of classes is relatively small.
When the number of routines increases, I noticed a far more than
linear time complexity for the compilation time. This is very
disappointing for me, since it makes it nearly impossible to compile
glue files with more than a few hundred routines.
I suspect that this behaviour is due to a lack of optimization
in the way identifiers are stored by the compiler: does gcc use
a linked list instead of a hash table? Is there a compilation
option that I may have overlooked?
I would be very interested in having this important drawback being
removed; such an optimization will probably be interesting anyway,
since the performance already drops sharply for files with a few
thousand lines. If I can somehow help with improving this point,
then please let me know; I know nothing about the g++ source code,
but may learn the necessary if somebody guides me.
Best wishes, Joris
-----------------------------------------------------------
Joris van der Hoeven <[EMAIL PROTECTED]>
http://www.texmacs.org: GNU TeXmacs scientific text editor
http://www.math.u-psud.fr/~vdhoeven: personal homepage
-----------------------------------------------------------
--- End Message ---
--
Gabriel Dos Reis
[EMAIL PROTECTED]
Texas A&M University -- Department of Computer Science
301, Bright Building -- College Station, TX 77843-3112