Not really, just the old saying that any piece of code can be made twice as fast (which often holds true recursively). /Henrik
On Sun, May 31, 2009 at 1:58 PM, Wacek Kusnierczyk <waclaw.marcin.kusnierc...@idi.ntnu.no> wrote: > wow! :) > > vQ > > Henrik Bengtsson wrote: >> library(gsubfn) >> library(gtools) >> library(rbenchmark) >> >> n <- 10000 >> df <- data.frame( >> a = rnorm(n), >> b = rnorm(n), >> c = rnorm(n), >> ip = replicate(n, paste(sample(255, 4), collapse='.'), simplify=TRUE) >> ) >> >> res <- benchmark(columns=c('test', 'elapsed'), replications=10, order=NULL, >> peda = { >> connection <- textConnection(as.character(df$ip)) >> o <- do.call(order, read.table(connection, sep='.')) >> close(connection) >> df[o, ] >> }, >> >> peda2 = { >> connection <- textConnection(as.character(df$ip)) >> dfT <- read.table(connection, sep='.', colClasses=rep("integer", >> 4), quote="", na.strings=NULL, blank.lines.skip=FALSE) >> close(connection) >> o <- do.call(order, dfT) >> df[o, ] >> }, >> >> hb = { >> ip <- strsplit(as.character(df$ip), split=".", fixed=TRUE) >> ip <- unlist(ip, use.names=FALSE) >> ip <- as.integer(ip) >> dim(ip) <- c(4, nrow(df)) >> ip <- 256^3*ip[1,] + 256^2*ip[2,] + 256*ip[3,] + ip[4,] >> o <- order(ip) >> df[o, ] >> }, >> >> hb2 = { >> ip <- strsplit(as.character(df$ip), split=".", fixed=TRUE) >> ip <- unlist(ip, use.names=FALSE) >> ip <- as.integer(ip); >> dim(ip) <- c(4, nrow(df)) >> o <- sort.list(ip[4,], method="radix", na.last=TRUE) >> for (kk in 3:1) { >> o <- o[sort.list(ip[kk,o], method="radix", na.last=TRUE)] >> } >> df[o, ] >> } >> ) >> >> print(res) >> >> test elapsed >> 1 peda 4.12 >> 2 peda2 4.08 >> 3 hb 0.28 >> 4 hb2 0.25 >> > > ______________________________________________ > R-help@r-project.org 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. > ______________________________________________ R-help@r-project.org 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.