Hi.

On Tue, 08 Apr 2014 09:25:32 +0200, MARTEL Leo wrote:
Hello everyone,

I'm writing here to get help with an application I
am developing using the Fraction class from org.apache.commons.math.
But, since I am French, my English is quite bad ! I apologize, for this
and I hope, you will understand me anyway.

Here is my problem:

I
need the rational numbers for my application but I have performances
issues. I found out, using profiling (visualVM), that most of the CPU
time was spent in the gcd() method since it is called every time a
Fraction is instantiated and that it's the harder part of the
computation. Moreover, a new instance is created each time an operation
(+ - * /) is called. That makes a lot of calls to gcd().

In my
application, most of the computations are : A + B * (C - D). Each time,
there are 3 operations so 3 calls to gcd().

My questions are:

Is it
possible to force the library to call gcd() only once, at the end of the
formula ?

I think that calling "gcd" ensures that the result will not overflow for
the largest possible range of arguments.

It's part of the code logic.

Maybe you could write methods that implement the "naive" algorithms for
addition, subtraction, ...
Then test whether you always get correct results in your application.


If i manage to do that, will it be faster? Or will the lone
gcd() last the same time that the three previous gcd() together?

I guess that it depends on the magnitude of the resulting numerator
and denominator...


Best regards,
Gilles


Thank
you for your answers, and again, my apologies for the bad English.

--

Léo Martel - Software Engineer
Institut Supérieur de l'Aéronautique et
de l'Espace (ISAE)


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to