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 18:33:10 GMT


Sebb commented on MATH-650:

It appears that the new code is almost twice as fast as the old.
However, it can still take 20-30ms to initialise the class.

This seems to be because of the large array initialisations.
I hacked the code to comment out most of the array entries, leaving just one or two in each
of the large arrays, and that improved the startup time to about 6 times as fast - about 6-7ms.
[Of course that code won't work properly]

So it might be worth attempting initialisation on demand, using a static holder class that
contains the pre-calculated data.

There was also a slight speed up from removing all the unused initialisation code and its
data items.

> 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