Re: How does gcc compare to other C++ compilers
On Jul 23, 8:18 pm, =D6=F6 Tiib <oot...@hot.ee> wrote:
On 23 juuli, 11:51, James Kanze <james.ka...@gmail.com> wrote:
[...]
It depends on the program, but for most real programs, MSVC 8.0
under Windows is significantly slower the g++ under Linux,
because VC++ actually opens and reads headers multiple times.
(Also probably because the Windows file system is significantly
slower than that of Linux.)
This is perhaps about that "#pragma once" thing. MSVC does parse
headers several times when there are usual (#ifndef) multiple
inclusion guards but does not even open the files second time when
there is "#pragma once" somewhere in it. g++ does also respect that
#pragma once as multiple inclusion guard, but this indeed is not in
current standard yet. If to use both include guards then it is fine i
think.
That's an idea. It probably would be a better solution for us
to use #pragma once, and drop the Lakos convention. (I'd
forgotten about #pragma once, since none of the compilers I'd
used before this job needed it.)
[...]
I do not know the size of your project but half an hour on
average modern pc sounds like several millions of lines with
liberal usage of templates.
It's certainly not the largest project I've worked on. But it
is fairly big.
Then again i haven't seen it ever compiling on g++ 5
minutes when size is that large. Grid based building may be one
solution if project size is causing it. For example one team uses some
sort of "incredibuild" product since building times started to affect
performance of people.
We actually use IncrediBuild, so the build times we observe
aren't that bad. IncrediBuild has its problems (particularly
in terms of dependency analysis, but Visual Studios is pretty
bad there too), but all in all, it's a nice tool, and well worth
using if you're developing under Windows.
--
James Kanze