Yeah, what Linoleum and BTG said.
I’ve worked on giant C/C++ codebases and the only ones where build times were a huge problem were ones in which the project was full of horrible header file abuse, like header files including dozens of other header files willy-nilly and stuff like that (often when they don’t even need to and could have just forward-declared a couple of things).
Thankfully I barely ever have to code in C/C++ anymore and with languages that are sane enough to not force you to split the declaration and definitions of code, compilation time tends to stay managable even if the programmers aren’t ubercareful.
Our game is 1.6 million lines of code. I have to believe that Braid was much smaller.
How big was Duke Nukem Forever at the end?
Yeah, my new game (which is in 3D) can do a full rebuild in 22 seconds on my laptop. (That’s without my having done any optimization with regard to compile time… once things hit 30 seconds I will probably do some of that).
It’s worth noting that under Visual C++ 6, with the much slower computers of the time, a code base very close to this compiled in 11 seconds. Let’s assume I added enough code to slow things down by a factor of 2 since that time (unlikely, but okay). That means Visual Studio has eaten all machine-speed increases that have happened in the past 8 years. While providing very little benefit in return.
That said, the MSVC linker is ridiculously bad and probably the biggest bottleneck for significant sized projects.
I have learned to love ‘static’ for file scope (and, by inference, not declaring things as methods unless I really want them that way for whatever strange reason).
Yeah, pretty much…
http://cloc.sourceforge.net v 1.08 T=3.0 s (170.3 files/s, 48718.0 lines/s)
-------------------------------------------------------------------------------
Language files blank comment code scale 3rd gen. equiv
-------------------------------------------------------------------------------
C++ 234 26984 8781 78185 x 1.51 = 118059.35
C/C++ Header 259 4805 3161 13626 x 1.00 = 13626.00
C 3 1046 2249 5986 x 0.77 = 4609.22
Perl 7 160 79 343 x 4.00 = 1372.00
XML 2 0 0 285 x 1.90 = 541.50
HTML 1 64 2 255 x 1.90 = 484.50
make 2 31 3 53 x 2.50 = 132.50
CSS 1 5 3 46 x 1.00 = 46.00
DOS Batch 2 0 0 2 x 0.63 = 1.26
-------------------------------------------------------------------------------
SUM: 511 33095 14278 98781 x 1.41 = 138872.33
-------------------------------------------------------------------------------