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, 24 Aug 2011 15:52:29 GMT


Sebb commented on MATH-650:

bq. I wonder if we should have some way to compute these tables at compile time and have them
simply loaded without recomputation.

Not sure the compiler can create the values.
But we could add code to print out the generated data, and then incorporate back into the

Should be no need to update it once created, however to check the ongoing accuracy of the
tables, the generating code could be moved into a test class, and used to compare against
the fixed data. This would probably require some package protected helper methods to give
access to the private data. Or the generator code could remain in the FastMath class, to be
called by the unit test code only.

> 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