On Saturday, 14 April 2012 at 19:51:21 UTC, Joseph Rushton Wakeling wrote:
GDC has all the regular gcc optimization flags available IIRC. The ones on the
GDC man page are just the ones specific to GDC.
I'm not talking about compiler flags, but the "inline" keyword in the C++ source
code. I saw some discussion about "@inline" but it seems not implemented (yet?).
Well, that is not a priority for D anyway.

About compiler optimizations, -finline-functions and -fweb are part of -O3. I
tried to compile with -no-bounds-check, but made no diference for DMD and GDC.
It probably is part of -release as q66 said.

Ah yes, you're right. I do wonder if your seeming speed differences are magnified because the whole operation is only 2-4 seconds long: if your algorithm were operating over a longer timeframe I think you'd likely find the relative speed differences decrease. (I have a memory of a program that took ~0.004s with a C/C++ version and 1s with D, and the difference seemed to be just startup time for the D program.)

What really amazes me is the difference between g++, DMD and GDC in size of the executable binary. 100 orders of magnitude!

3 remarks about the D code. One is that much of it still seems very "C-ish"; I'd be interested to see how speed and executable size differ if things like the file opening, or the reading of characters, are done with more idiomatic D code. Sounds stupid as the C stuff should be fastest, but I've been surprised sometimes at how using idiomatic D formulations can improve things.

Second remark is more of a query -- can Predictor.p() and .update really be marked as pure? Their result for a given input actually varies depending on the current values of cxt and ct, which are modified outside of function scope.

Third remark -- again a query -- why the GC.disable ... ?

Reply via email to