![]()  | 
Home | Libraries | People | FAQ | More | 
      By running our performance test suite multiple times, we can compare the effect
      of different compilers: as might be expected, the differences are generally
      small compared to say disabling internal use of long
      double. However, there are still gains
      to be main, particularly from some of the commercial offerings:
    
Table 16.5. Compiler Comparison on Windows x64
| 
               Function  | 
               
                Microsoft Visual C++ version 14.0  | 
               
                GNU C++ version 5.3.0  | 
               
                GNU C++ version 5.3.0  | 
               
                Intel C++ C++0x mode version 1600  | 
|---|---|---|---|---|
| 
               assoc_laguerre  | 
               
                1.16  | 
               
                1.21  | 
               
                1.06  | 
               
                1.00  | 
| 
               assoc_legendre  | 
               
                1.57  | 
               
                1.80  | 
               
                1.16  | 
               
                1.00  | 
| 
               beta  | 
               
                1.74  | 
               
                3.78  | 
               
                2.17  | 
               
                1.00  | 
| 
               beta (incomplete)  | 
               
                1.44  | 
               
                3.03  | 
               
                1.84  | 
               
                1.00  | 
| 
               cbrt  | 
               
                3.21  | 
               
                3.43  | 
               
                3.07  | 
               
                1.00  | 
| 
               cyl_bessel_i  | 
               
                1.11  | 
               
                2.78  | 
               
                1.21  | 
               
                1.00  | 
| 
               cyl_bessel_i (integer order)  | 
               
                1.29  | 
               
                3.16  | 
               
                1.22  | 
               
                1.00  | 
| 
               cyl_bessel_j  | 
               
                1.19  | 
               
                2.06  | 
               
                1.25  | 
               
                1.00  | 
| 
               cyl_bessel_j (integer order)  | 
               
                1.36  | 
               
                2.39  | 
               
                1.47  | 
               
                1.00  | 
| 
               cyl_bessel_k  | 
               
                1.04  | 
               
                9.43  | 
               
                1.03  | 
               
                1.00  | 
| 
               cyl_bessel_k (integer order)  | 
               
                1.26  | 
               
                10.49  | 
               
                1.10  | 
               
                1.00  | 
| 
               cyl_neumann  | 
               
                16.76  | 
               
                2.01  | 
               
                1.00  | 
               
                15.35  | 
| 
               cyl_neumann (integer order)  | 
               
                1.00  | 
               
                1.79  | 
               
                1.24  | 
               
                1.02  | 
| 
               digamma  | 
               
                1.20  | 
               
                3.75  | 
               
                2.15  | 
               
                1.00  | 
| 
               ellint_1  | 
               
                1.87  | 
               
                1.99  | 
               
                1.32  | 
               
                1.00  | 
| 
               ellint_1 (complete)  | 
               
                2.18  | 
               
                2.57  | 
               
                1.57  | 
               
                1.00  | 
| 
               ellint_2  | 
               
                1.78  | 
               
                2.17  | 
               
                1.52  | 
               
                1.00  | 
| 
               ellint_2 (complete)  | 
               
                2.14  | 
               
                2.07  | 
               
                1.24  | 
               
                1.00  | 
| 
               ellint_3  | 
               
                1.94  | 
               
                2.91  | 
               
                1.65  | 
               
                1.00  | 
| 
               ellint_3 (complete)  | 
               
                2.05  | 
               
                3.07  | 
               
                1.46  | 
               
                1.00  | 
| 
               ellint_rc  | 
               
                1.58  | 
               
                2.68  | 
               
                1.55  | 
               
                1.00  | 
| 
               ellint_rd  | 
               
                1.75  | 
               
                1.83  | 
               
                1.40  | 
               
                1.00  | 
| 
               ellint_rf  | 
               
                1.69  | 
               
                2.40  | 
               
                1.57  | 
               
                1.00  | 
| 
               ellint_rj  | 
               
                1.91  | 
               
                2.96  | 
               
                1.43  | 
               
                1.00  | 
| 
               erf  | 
               
                1.77  | 
               
                2.92  | 
               
                1.92  | 
               
                1.00  | 
| 
               erfc  | 
               
                1.29  | 
               
                3.41  | 
               
                2.06  | 
               
                1.00  | 
| 
               expint  | 
               
                1.39  | 
               
                3.07  | 
               
                2.14  | 
               
                1.00  | 
| 
               expint (En)  | 
               
                1.10  | 
               
                2.19  | 
               
                1.38  | 
               
                1.00  | 
| 
               expm1  | 
               
                1.00  | 
               
                3.10  | 
               
                2.40  | 
               
                1.10  | 
| 
               gamma_p  | 
               
                1.29  | 
               
                2.64  | 
               
                1.71  | 
               
                1.00  | 
| 
               gamma_p_inv  | 
               
                1.36  | 
               
                2.47  | 
               
                1.91  | 
               
                1.00  | 
| 
               gamma_q  | 
               
                1.16  | 
               
                2.79  | 
               
                1.61  | 
               
                1.00  | 
| 
               gamma_q_inv  | 
               
                1.37  | 
               
                2.38  | 
               
                1.89  | 
               
                1.00  | 
| 
               ibeta  | 
               
                1.34  | 
               
                3.13  | 
               
                1.83  | 
               
                1.00  | 
| 
               ibeta_inv  | 
               
                1.51  | 
               
                2.81  | 
               
                2.27  | 
               
                1.00  | 
| 
               ibetac  | 
               
                1.29  | 
               
                2.94  | 
               
                1.73  | 
               
                1.00  | 
| 
               ibetac_inv  | 
               
                1.41  | 
               
                2.80  | 
               
                1.78  | 
               
                1.00  | 
| 
               jacobi_cn  | 
               
                1.36  | 
               
                3.72  | 
               
                2.28  | 
               
                1.00  | 
| 
               jacobi_dn  | 
               
                1.82  | 
               
                3.68  | 
               
                2.27  | 
               
                1.00  | 
| 
               jacobi_sn  | 
               
                1.31  | 
               
                3.73  | 
               
                2.43  | 
               
                1.00  | 
| 
               laguerre  | 
               
                1.00  | 
               
                1.15  | 
               
                1.04  | 
               
                1.10  | 
| 
               legendre  | 
               
                1.07  | 
               
                1.16  | 
               
                1.00  | 
               
                1.13  | 
| 
               legendre Q  | 
               
                1.00  | 
               
                1.20  | 
               
                1.01  | 
               
                1.07  | 
| 
               lgamma  | 
               
                1.00  | 
               
                3.07  | 
               
                1.82  | 
               
                1.05  | 
| 
               log1p  | 
               
                1.00  | 
               
                2.00  | 
               
                1.14  | 
               
                1.00  | 
| 
               polygamma  | 
               
                1.16  | 
               
                1.02  | 
               
                2.24  | 
               
                1.00  | 
| 
               sph_bessel  | 
               
                1.17  | 
               
                1.55  | 
               
                1.09  | 
               
                1.00  | 
| 
               sph_neumann  | 
               
                1.08  | 
               
                2.07  | 
               
                1.00  | 
               
                1.01  | 
| 
               tgamma  | 
               
                1.31  | 
               
                4.03  | 
               
                2.49  | 
               
                1.00  | 
| 
               tgamma (incomplete)  | 
               
                1.26  | 
               
                2.52  | 
               
                1.73  | 
               
                1.00  | 
| 
               trigamma  | 
               
                1.35  | 
               
                2.88  | 
               
                1.41  | 
               
                1.00  | 
| 
               zeta  | 
               
                1.34  | 
               
                3.83  | 
               
                2.52  | 
               
                1.00  | 
Table 16.6. Compiler Comparison on linux
| 
               Function  | 
               
                GNU C++ version 5.3.0  | 
               
                GNU C++ version 5.3.0  | 
|---|---|---|
| 
               assoc_laguerre  | 
               
                1.36  | 
               
                1.00  | 
| 
               assoc_legendre  | 
               
                2.55  | 
               
                1.00  | 
| 
               beta  | 
               
                4.71  | 
               
                1.00  | 
| 
               beta (incomplete)  | 
               
                3.12  | 
               
                1.00  | 
| 
               cbrt  | 
               
                2.53  | 
               
                1.00  | 
| 
               cyl_bessel_i  | 
               
                3.47  | 
               
                1.00  | 
| 
               cyl_bessel_i (integer order)  | 
               
                3.38  | 
               
                1.00  | 
| 
               cyl_bessel_j  | 
               
                2.69  | 
               
                1.00  | 
| 
               cyl_bessel_j (integer order)  | 
               
                2.59  | 
               
                1.00  | 
| 
               cyl_bessel_k  | 
               
                6.86  | 
               
                1.00  | 
| 
               cyl_bessel_k (integer order)  | 
               
                10.17  | 
               
                1.00  | 
| 
               cyl_neumann  | 
               
                2.48  | 
               
                1.00  | 
| 
               cyl_neumann (integer order)  | 
               
                2.20  | 
               
                1.00  | 
| 
               digamma  | 
               
                1.92  | 
               
                1.00  | 
| 
               ellint_1  | 
               
                1.94  | 
               
                1.00  | 
| 
               ellint_1 (complete)  | 
               
                1.86  | 
               
                1.00  | 
| 
               ellint_2  | 
               
                2.32  | 
               
                1.00  | 
| 
               ellint_2 (complete)  | 
               
                1.71  | 
               
                1.00  | 
| 
               ellint_3  | 
               
                2.75  | 
               
                1.00  | 
| 
               ellint_3 (complete)  | 
               
                2.23  | 
               
                1.00  | 
| 
               ellint_rc  | 
               
                1.57  | 
               
                1.00  | 
| 
               ellint_rd  | 
               
                2.23  | 
               
                1.00  | 
| 
               ellint_rf  | 
               
                1.51  | 
               
                1.00  | 
| 
               ellint_rj  | 
               
                2.33  | 
               
                1.00  | 
| 
               erf  | 
               
                2.60  | 
               
                1.00  | 
| 
               erfc  | 
               
                2.68  | 
               
                1.00  | 
| 
               expint  | 
               
                2.47  | 
               
                1.00  | 
| 
               expint (En)  | 
               
                1.86  | 
               
                1.00  | 
| 
               expm1  | 
               
                1.00  | 
               
                1.10  | 
| 
               gamma_p  | 
               
                2.42  | 
               
                1.00  | 
| 
               gamma_p_inv  | 
               
                2.24  | 
               
                1.00  | 
| 
               gamma_q  | 
               
                2.53  | 
               
                1.00  | 
| 
               gamma_q_inv  | 
               
                2.45  | 
               
                1.00  | 
| 
               ibeta  | 
               
                2.71  | 
               
                1.00  | 
| 
               ibeta_inv  | 
               
                2.58  | 
               
                1.00  | 
| 
               ibetac  | 
               
                2.66  | 
               
                1.00  | 
| 
               ibetac_inv  | 
               
                2.44  | 
               
                1.00  | 
| 
               jacobi_cn  | 
               
                2.77  | 
               
                1.00  | 
| 
               jacobi_dn  | 
               
                2.80  | 
               
                1.00  | 
| 
               jacobi_sn  | 
               
                2.86  | 
               
                1.00  | 
| 
               laguerre  | 
               
                1.09  | 
               
                1.00  | 
| 
               legendre  | 
               
                1.16  | 
               
                1.00  | 
| 
               legendre Q  | 
               
                1.18  | 
               
                1.00  | 
| 
               lgamma  | 
               
                2.20  | 
               
                1.00  | 
| 
               log1p  | 
               
                1.00  | 
               
                1.00  | 
| 
               polygamma  | 
               
                3.93  | 
               
                1.00  | 
| 
               sph_bessel  | 
               
                1.71  | 
               
                1.00  | 
| 
               sph_neumann  | 
               
                2.15  | 
               
                1.00  | 
| 
               tgamma  | 
               
                3.69  | 
               
                1.00  | 
| 
               tgamma (incomplete)  | 
               
                2.35  | 
               
                1.00  | 
| 
               trigamma  | 
               
                1.64  | 
               
                1.00  | 
| 
               zeta  | 
               
                2.71  | 
               
                1.00  |