commons-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Sebb (JIRA)" <>
Subject [jira] [Commented] (MATH-650) FastMath has static code which slows the first access to FastMath
Date Wed, 07 Sep 2011 21:53:08 GMT


Sebb commented on MATH-650:

Yes, I looked at IODH. Turns out that the holder is not required.

Instead, one can use a static class which contains the initial data:

public class FastMath{
  private static class lnMant {
    private static final double LN_MANT[][] = {
       double d = lnMant.LN_MANT[j][j];
// was double d = LN_MANT[i][j];

Very simple to implement; doing that plus commenting out all init code and data results in
speed-up of about 6 times for FastMath.max().

Does not seem to affect performance of method calls once its table(s) has/ve been loaded.

What remains to be decided is what to do with the init code. Some of it might be useful in
its own right - Taylor expansions for sine/cosine etc. 
Perhaps create another class (SlowMath anyone?) in the same package. 
And/or move it to the test tree?

> FastMath has static code which slows the first access to FastMath
> -----------------------------------------------------------------
>                 Key: MATH-650
>                 URL:
>             Project: Commons Math
>          Issue Type: Improvement
>    Affects Versions: Nightly Builds
>         Environment: Android 2.3 (Dalvik VM with JIT)
>            Reporter: Alexis Robert
>            Priority: Minor
> Working on an Android application using Orekit, I've discovered that a simple FastMath.floor()
takes about 4 to 5 secs on a 1GHz Nexus One phone (only the first time it's called). I've
launched the Android profiling tool (traceview) and the problem seems to be linked with the
static portion of FastMath code named "// Initialize tables"
> The timing resulted in :
> - FastMath.slowexp (40.8%)
> - FastMath.expint (39.2%)
>  \- FastMath.quadmult() (95.6% of expint)
> - FastMath.slowlog (18.2%)
> Hoping that would help
> Thanks!
> Alexis Robert

This message is automatically generated by JIRA.
For more information on JIRA, see:


View raw message