| Home | Libraries | People | FAQ | More

## Comparing Compilers

After a good choice of build settings the next most important thing you can do, is choose your compiler - and the standard C library it sits on top of - very carefully. GCC-3.x in particular has been found to be particularly bad at inlining code, and performing the kinds of high level transformations that good C++ performance demands (thankfully GCC-4.x is somewhat better in this respect).

Table 14.2. Performance Comparison of Various Windows Compilers

Function | Intel C++ 10.0 ( /Ox /Qipo /QxN ) | Microsoft Visual C++ 8.0 ( /Ox /arch:SSE2 ) | Cygwin G++ 3.4 ( /O3 )
--- | --- | --- | ---
erf | 1.00 (4.118e-008s) | 1.00 (1.483e-007s) | 3.24 (1.336e-007s)
erf_inv | 1.00 (4.439e-008s) | 1.00 (4.888e-007s) | 7.88 (3.500e-007s)
ibeta and ibetac | 1.00 (1.631e-006s) | 1.14 (1.852e-006s) | 3.05 (4.975e-006s)
ibeta_inv and ibetac_inv | 1.00 (6.133e-006s) | 1.19 (7.311e-006s) | 2.60 (1.597e-005s)
ibeta_inva, ibetac_inva, ibeta_invb and ibetac_invb | 1.00 (2.453e-005s) | 1.16 (2.847e-005s) | 2.83 (6.947e-005s)
gamma_p and gamma_q | 1.00 (6.735e-007s) | 1.41 (9.504e-007s) | 2.78 (1.872e-006s)
gamma_p_inv and gamma_q_inv | 1.00 (2.637e-006s) | 1.38 (3.631e-006s) | 3.31 (8.736e-006s)
gamma_p_inva and gamma_q_inva | 1.00 (7.716e-006s) | 1.29 (9.982e-006s) | 2.56 (1.974e-005s)