Re: [R] x*x*x*... vs x^n

From: Ravi Varadhan <rvaradha_at_jhsph.edu>
Date: Thu 30 Jun 2005 - 00:42:25 EST

I ran 100 repetitions of the 3 multiplications that Robin had compared. Here are the summaries of system times (I only took the first component of system.time) that I obtained. It is clear that f1() is nearly twice as slow as f2() which is slightly slower (not 3 times slower as claimed by Robin) than f3(). So, I don't think that there is much to choose between the "cleverer" way and the most obvious way to compute integer powers.

> summary(f1time)

   Min. 1st Qu. Median Mean 3rd Qu. Max.   0.060 0.170 0.210 0.199 0.230 0.300
> summary(f2time)

   Min. 1st Qu. Median Mean 3rd Qu. Max.   0.060 0.100 0.110 0.128 0.170 0.190
> summary(f3time)

   Min. 1st Qu. Median Mean 3rd Qu. Max.  0.0000 0.0300 0.0950 0.0779 0.1100 0.1300

Ravi.



Ravi Varadhan, Ph.D.
Assistant Professor, The Center on Aging and Health Division of Geriatric Medicine and Gerontology Johns Hopkins University
Ph: (410) 502-2619
Fax: (410) 614-9625
Email: rvaradhan@jhmi.edu

> -----Original Message-----
> From: r-help-bounces@stat.math.ethz.ch [mailto:r-help-
> bounces@stat.math.ethz.ch] On Behalf Of Tuszynski, Jaroslaw W.
> Sent: Wednesday, June 29, 2005 8:25 AM
> To: 'Robin Hankin'; r-help
> Subject: Re: [R] x*x*x*... vs x^n
>
> I tried your code and got different results:
> system.time(ignore <- f1(a))
> [1] 0.83 0.09 1.08 NA NA
> > system.time(ignore <- f2(a))
> [1] 0.38 0.01 0.41 NA NA
> > system.time(ignore <- f3(a))
> [1] 0.32 0.04 0.43 NA NA
>
> So I tried it again but with a loop and got:
>
> > for(i in 1:10) cat(system.time(ignore <- f2(a)), "\n")
> 0.36 0.04 0.44 NA NA
> 0.32 0.01 0.34 NA NA
> 0.28 0.03 0.32 NA NA
> 0.29 0.03 0.35 NA NA
> 0.3 0.02 0.32 NA NA
> 0.28 0.03 0.32 NA NA
> 0.3 0.02 0.32 NA NA
> 0.29 0.02 0.34 NA NA
> 0.23 0.03 0.32 NA NA
> 0.42 0 0.45 NA NA
>
> > for(i in 1:10) cat(system.time(ignore <- f3(a)), "\n")
> 0.19 0.04 0.25 NA NA
> 0.17 0.04 0.25 NA NA
> 0.21 0.02 0.25 NA NA
> 0.21 0.02 0.23 NA NA
> 0.18 0.04 0.23 NA NA
> 0.18 0.05 0.23 NA NA
> 0.18 0.04 0.25 NA NA
> 0.17 0.06 0.23 NA NA
> 0.2 0.02 0.23 NA NA
> 0.14 0.06 0.25 NA NA
>
> It seems to me that f3 is 50% slower than f2 not 300%.
>
> My System is:
> - R version: R 2.1.1
> - Operating System: Win XP
> - Compiler: mingw32-gcc-3.4.2
>
> Jarek
> ====================================================\=======
>
> Jarek Tuszynski, PhD. o / \
> Science Applications International Corporation <\__,|
> (703) 676-4192 "> \
> Jaroslaw.W.Tuszynski@saic.com ` \
>
>
>
> -----Original Message-----
> From: r-help-bounces@stat.math.ethz.ch
> [mailto:r-help-bounces@stat.math.ethz.ch] On Behalf Of Robin Hankin
> Sent: Wednesday, June 29, 2005 7:32 AM
> To: r-help
> Subject: [R] x*x*x*... vs x^n
>
> Hi
>
> I have been wondering if there one can speed up calculating small powers
> of
> numbers such as x^8 using multiplication.
>
> In addition, one can be a bit clever and calculate x^8 using only 3
> multiplies.
>
> look at this:
>
>
> > f1 <- function(x){x*x*x*x*x*x*x*x}
> > f2 <- function(x){x^8}
> > f3 <- function(x){x2 <- x*x;x4 <- x2*x2;return(x4*x4)}
>
> [so f1() and f2() and f3() are algebraically identical]
>
>
> > a <- rnorm(1000000)
> > system.time(ignore <- f1(a))
> [1] 0.50 0.17 2.88 0.00 0.00
>
> > system.time(ignore <- f2(a))
> [1] 0.31 0.03 1.40 0.00 0.00
>
> > system.time(ignore <- f3(a))
> [1] 0.10 0.07 0.18 0.00 0.00
>
>
> [these figures show little variance from trial to trial]
>
>
> I was expecting f2() and f3() to be about the same.
> I was not expecting a factor of 3 there!
>
> anyone got any comments?
>
>
>
>
> --
> Robin Hankin
> Uncertainty Analyst
> National Oceanography Centre, Southampton European Way, Southampton SO14
> 3ZH, UK
> tel 023-8059-7743
>
> ______________________________________________
> R-help@stat.math.ethz.ch mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide!
> http://www.R-project.org/posting-guide.html
>
> ______________________________________________
> R-help@stat.math.ethz.ch mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide! http://www.R-project.org/posting-
> guide.html


R-help@stat.math.ethz.ch mailing list
https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html Received on Thu Jun 30 00:45:57 2005

This archive was generated by hypermail 2.1.8 : Fri 03 Mar 2006 - 03:33:06 EST