[R] 6 times faster by eliminating apply
Jason Liao
jg_liao at yahoo.com
Tue May 1 17:32:10 CEST 2001
This is some kind of follow-up to my previous posts. I have further
improved the speed of my program 6 times by eliminating all the
apply(). It turns out that apply is slow, is slower than direct loop,
it is an order slower than a matrix operation alternative.
Here is one example. The first apply version runs 19 seconds, the
second loop version runs 13 seconds, the third matrix version runs 1
second.
Jason Liao
rm(list=ls(all=TRUE))
test1 <- function()
{
u <- runif(n*m);
dim(u) <- c(n,m);
v <- apply(u, 2, crossprod);
}
test2 <- function()
{
u <- runif(n*m);
dim(u) <- c(n,m);
v <- numeric(m);
for(j in 1:m) v[j] <- crossprod(u[, j]);
}
test3 <- function()
{
u <- runif(n*m);
dim(u) <- c(n,m);
u <- u*u;
one <- rep(1, n);
v <- one %*% u;
}
n<-10;
m<-10000;
print(date());
for(i in 1:10) test1()
print(date());
for(i in 1:10) test2()
print(date());
for(i in 1:10) test3()
print(date());
=====
Jason G. Liao
Department of Biometry and Epidemiology
Medical University of South Carolina
135 Rutledge Ave., STE 1148, Charleston, SC 29425
phone (843) 876-1114, fax (843) 876-1126
http://www.geocities.com/jg_liao/index.html
__________________________________________________
Do You Yahoo!?
Yahoo! Auctions - buy the things you want at great prices
http://auctions.yahoo.com/
-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
r-help mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
Send "info", "help", or "[un]subscribe"
(in the "body", not the subject !) To: r-help-request at stat.math.ethz.ch
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._
More information about the R-help
mailing list