On 9 October 2011 22:44, Gilles Sadowski <gil...@harfang.homelinux.org> wrote:
>> >>>>> Referring to:
>> >>>>>  https://issues.apache.org/jira/browse/MATH-650
>> >>>>>  https://issues.apache.org/jira/browse/MATH-675
>> >>>>>  https://issues.apache.org/jira/browse/MATH-676
>> >>>>>
>> >>>>> In the absence of additional comments I'm proposing to resolve those 
>> >>>>> issues.
>> >>>>> Please let me know whether there are pending objections to my suggested
>> >>>>> solutions.
>> >>>> Regarding MATH-650 (FastMath)
>> >>>>
>> >>>> If the proposal is to use resources instead of static arrays, then I
>> >>>> disagree, because resources are significantly slower than static
>> >>>> arrays.
>> >>>>
>> >>>> I am opposed to storing the arrays in package protected classes,
>> >>>> because that exposes the data unnecessarily.
>> >>>>
>> >>>> However, if you really cannot agree to the including the static arrays
>> >>>> within the FastMath class itself, then I suggest using separate
>> >>>> classes with private arrays and package-protected getters.
>> >>> It has been shown that literal arrays are faster than resources in one
>> >>> micro-benchmark instance: Namely, an application that consists of a 
>> >>> single
>> >>> function call. We still wait for a real use-case where the difference 
>> >>> will
>> >>> significantly matter.
>> >> The original reason the JIRA was raised is probably solved by moving
>> >> to on demand init.
>> > I've been saying that same thing more than a few times, in various ways.
>> >
>> >> It's not clear if that alone is sufficient to deal with the OP's use case.
>> > At one point, Alexis wrote (on JIRA):
>> >   "A response time with the magnitude of 100ms is really perfect !"
>> >
>> > Then I provided a test case, following Luc's indication of the typical
>> > functions called in the original use case.
>> > On my machine, the timing for all alternatives was below 100 ms.
>>
>> 100ms on a fast machine doing nothing else is not awe-inspiring.
>
> I don't understand whether you agree with my position i.e. that all
> alternatives having times below 100 ms can be considered sufficiently good.

AIUI, the 100 ms was for loading time on the Android system, not a
desktop or laptop.

> I recall that the sole worry clearly expressed by the original poster was
> the psychological effect of waiting "too long" for the result. [For an
> interactive application, waiting ~100 ms is not noticeable; it's far less
> than the time we routinely wait between a click on an icon, and the opening
> of the application window.]
>
>> Holding a static class lock for that long is in fact at *bad
>> thing*.
>
> I don't understand. What do you mean? Which class, which lock? Can you
> illustrate the items using the current issue?
>
>> People way smarter than me have come up with great ways to
>> work around delays in app startup times.  I prefer not to have to
>> use those things, and, more importantly, not to force others using
>> my code to use them.
>
> The point is that there are no delays anymore (solved by IOD).

No, IOD only solves the delays for method calls that don't use the arrays.

>> I favor the static arrays solution, IIUC what the timing tests have
>> shown.  Specifically, if static arrays can reduce class loading time
>> by more than 50ms, I think we should use them.  If there is some
>> other workaround that allows the resource loading and does not
>> increase loading time more than 50-100ms, I am OK with the resources
>> approach as well.
>
> [I guess that we are using the timings on my machine as a baseline.]
> There is no reduction of more than 50 ms by using literal arrays: at most 12
> ms, with "FastMath" bloated with the literal arrays.
>
> A strange thing is that moving the arrays to their own class increased their
> loading time by ~6ms, while decreasing the resource loading time by about
> the same amount.[1]  I mean that it is as if, somehow, the literal arrays[2]
> were incurring a penalty to other functionalities (the resource loading in
> this case) called from within "FastMath"!

I don't think you can conclude that without further evidence.

> In conclusion, with the current code in trunk, the difference between the
> "literal arrays" and "resources" alternatives is less than ~0.5 millisecond.

On your system.

On an Android phone it will be a considerably bigger difference

>
> Gilles
>
> [1] I also gained some 1-2 ms using "nio" and reducing the number of I/O
>    method calls.
> [2] Even when they were not used, e.g. when "LOAD_RESOURCES" was set to
>    "true" in order to use the resource loading alternative.
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
> For additional commands, e-mail: dev-h...@commons.apache.org
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
For additional commands, e-mail: dev-h...@commons.apache.org

Reply via email to