MinGW versus VC++ 6.0

de 2004-12-27 - On windows, there are at least two supported and well-working build systems for tcl: Building Tcl/Tk with Mingw or use the MS VC++ compiler (6.0 is known to work well, this wiki has reports, that even the free VC++ 7.0 toolkit will work [1 ]) and the platform specific makefile.vc, which is included into the source distribution.

I build tcl8.4.9 on a w2k system, using:

  • VC++ 6.0 and makefile.vc
  • VC++ 6.0, msys and configure
  • mingw 3.1 (based on gcc 3.2.3), msys and configure

and tested that tclsh84 binaries with tclbench (from cvs, 2004-12-27). The over-all runtimes for the tclbench run was:

  VC++ 6.0/makefile.vc:   10:34 min
  VC++ 6.0/mys/configure: 13:28 min
  mingw/msys/configure:   11:41 min

The notable difference between the VC++ 6.0 with makefile.vc build tclsh84 and the VC++ 6.0 with msys/configure build tclsh84 was surprising. The reason for this was obviously, that configure picked other build/linker options, than makefile.vc. After I've hand-edited the configure created Makefile to use the same optimization options, than makefile.vc, both VC++ 6.0 builds run equal fast, according to tclbench, as expected. That results triggered a bug report [2 ] and that triggered an update of the core build system, if you use VC++ 6.0 w/ configure.

While the default optimization level for gcc on unix some times ago was cranked up from the for ages used -O to -O2, under windows the default for gcc based builds at 8.4.9 is still -O. Bumping that up to -02 sucked a bit more speed out of the mingw build. On the same box as above, the over-all time for the tclbench run was 11:01.