Xiao-Feng Li wrote:
> A quick check shows that lots of time is spent in sqrt() computation:
> 
>       hyluni.dll!___ieee754_sqrt()  + 0x1f3   C
>       hyluni.dll!_fdlibm_sqrt()  + 0x11       C
>       hyluni.dll!internal_sqrt(double arg1=1528.7960683139602)  Line 301 + 
> 0xe        C
>       hyluni.dll!Java_java_lang_Math_sqrt(const JNINativeInterface_ * *
> env=0x0206aaa0, _jobject * jclazz=0x0013f5b0, double
> arg1=1528.7960683139602)  Line 596 + 0xe      C
>       0345c1b2()      

In this micro-bench ...

======================================================================
public static void main(String[] args) {

    // warm-up
    double result = 0.0d;
    for (int i = 0; i < 10000; i++) {
        result += Math.sqrt((double) i);
    }

    // Timed run
    result = 0.0d;
    long start = System.currentTimeMillis();
    for (int i = 0; i < 1000000; i++) {
        result += Math.sqrt((double) i);
    }

    System.out.println("Result = " + result + " in "
               + (System.currentTimeMillis() - start) + "ms");
}
======================================================================


Harmony 5.0 M3 prints
    Result = 6.666661664588418E8 in 1352ms
IBM 5.0 SR5a prints
    Result = 6.666661664588418E8 in 40ms
Sun 1.6.0-b105 prints
    Result = 6.666661664588418E8 in 40ms


Can we squeeze a bit more out of the JIT?

Regards,
Tim





Reply via email to