[R] Odp: optimizing speed of calculation (recursive product)
Wolfgang Raffelsberger
wraff at titus.u-strasbg.fr
Wed Sep 3 19:25:22 CEST 2008
Dear Uwe, Petr and Berend,
Thank's a lot !!
I just checked and it's
c(cumprod(a)[M-1],cumprod(a[-1])[M-1]))
that gives an identical result to the my initial loop (at 10x speed of
my initial loop ... )
Wolfgang
Berend Hasselman a écrit :
> Petr Pikal wrote:
>
>> Hi
>>
>> r-help-bounces at r-project.org napsal dne 03.09.2008 16:39:07:
>> ....
>>
>>> In many cases I've noticed that using apply, sapply etc can help
>>> speeding up processes, but in this case I don't see how I could do so.
>>>
>>> a <- runif(10000000,0.5,1.6)
>>> C <- 2
>>> M <- 10000000
>>> system.time( for (i in 1:(M-1)) {C <- C* c(a[i],a[i+1])} )
>>>
>> Maybe simple math? You want last two members of 2*cumprod(a).
>>
>> So
>>
>>
>>> system.time(2*cumprod(a)[9999999:10000000])
>>>
>> user system elapsed
>> 1.97 0.04 2.00
>>
>> shall be a little bit quicker then for cycle. But it is valid only for the
>> above calculation.
>>
>>
>
> I think
>
> 2*c(cumprod(a)[M-1],cumprod(a[-1])[M-1])
>
> is the answer.
>
> Berend
>
--
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Wolfgang Raffelsberger, PhD
Laboratoire de BioInformatique et Génomique Intégratives
CNRS UMR7104, IGBMC
1 rue Laurent Fries, 67404 Illkirch Strasbourg, France
Tel (+33) 388 65 3300 Fax (+33) 388 65 3276
http://www-bio3d-igbmc.u-strasbg.fr/~wraff
wolfgang.raffelsberger at igbmc.fr
More information about the R-help
mailing list