From: John Fox <jfox_at_mcmaster.ca>

Date: Mon 22 Jan 2007 - 15:39:09 GMT

John Fox

Department of Sociology

McMaster University

Hamilton, Ontario

Canada L8S 4M4

905-525-9140x23604

http://socserv.mcmaster.ca/jfox

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 and provide commented, minimal, self-contained, reproducible code. Received on Tue Jan 23 03:21:15 2007

Date: Mon 22 Jan 2007 - 15:39:09 GMT

Dear Haris,

My timings were on a 3 GHz Pentium 4 system with 1 GB of memory running Win XP SP2 and R 2.4.1.

I'm no expert on these matters, and I wouldn't have been surprised by qualitatively different results on different systems, but this difference is larger than I would have expected. One thing that seems particularly striking in your results is the large difference between elapsed time and user CPU time, making me wonder what else was going on when you ran these examples.

Regards,

John

John Fox

Department of Sociology

McMaster University

Hamilton, Ontario

Canada L8S 4M4

905-525-9140x23604

http://socserv.mcmaster.ca/jfox

*> -----Original Message-----
**> From: Charilaos Skiadas [mailto:skiadas@hanover.edu]
**> Sent: Monday, January 22, 2007 10:00 AM
*

> To: John Fox

*> Cc: r-help@stat.math.ethz.ch; 'miraceti'
**> Subject: Re: [R] efficient code. how to reduce running time?
**>
**> On Jan 21, 2007, at 8:11 PM, John Fox wrote:
**>
**> > Dear Haris,
**> >
**> > Using lapply() et al. may produce cleaner code, but it won't
**> > necessarily speed up a computation. For example:
**> >
**> >> X <- data.frame(matrix(rnorm(1000*1000), 1000, 1000)) y <-
**> >> rnorm(1000)
**> >>
**> >> mods <- as.list(1:1000)
**> >> system.time(for (i in 1:1000) mods[[i]] <- lm(y ~ X[,i]))
**> > [1] 40.53 0.05 40.61 NA NA
**> >>
**> >> system.time(mods <- lapply(as.list(X), function(x) lm(y ~ x)))
**> > [1] 53.29 0.37 53.94 NA NA
**> >
**> Interesting, in my system the results are quite different:
**>
**> > system.time(for (i in 1:1000) mods[[i]] <- lm(y ~ X[,i]))
**> [1] 192.035 12.601 797.094 0.000 0.000
**> > system.time(mods <- lapply(as.list(X), function(x) lm(y ~ x)))
**> [1] 59.913 9.918 289.030 0.000 0.000
**>
**> Regular MacOSX install with ~760MB memory.
**>
**> > In cases such as this, I don't even find the code using *apply()
**> > easier to read.
**> >
**> > Regards,
**> > John
**>
**> Haris
**>
*

>

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 and provide commented, minimal, self-contained, reproducible code. Received on Tue Jan 23 03:21:15 2007

Archive maintained by Robert King, hosted by
the discipline of
statistics at the
University of Newcastle,
Australia.

Archive generated by hypermail 2.1.8, at Mon 22 Jan 2007 - 17:30:32 GMT.

*
Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-help.
Please read the posting
guide before posting to the list.
*