benchmarking grabbing artist info ## Sample Data DT.arts <- data.table(structure(list(type = c("artist", "artist", "artist", "artist", "artist"), name = c("Afortiori", "Almost There", "Arrulo", "Big Sound", "Aap Ka Sarror"), id = c("ART001328", "ART001861", "ART002864", "ART004539", "ART001008"), sourceGrp = c("Concs", "Concs", "Concs", "Concs", "Concs")), .Names = c("type", "name", "id", "sourceGrp"), row.names = c(NA, -5L), class = c("data.table", "data.frame"))) noname <- quote(DT.arts[, toJSON(as.list(.SD)), by=1:nrow(DT.arts)]$V1) named.list <- quote(DT.arts[, list(body=toJSON(as.list(.SD))), by=1:nrow(DT.arts)]$body) using.apply <- quote(apply(DT.arts, 1, function(x) toJSON(as.list(x)))) identical(eval(using.apply), eval(noname)) identical(eval(named.list), eval(noname)) microbenchmark(noname=eval(noname), named.list=eval(named.list), using.apply=eval(using.apply), times=500L) # Unit: microseconds # expr min lq median uq max neval # noname 1150.962 1225.327 1255.276 1296.846 120636.830 500 # named.list 1166.996 1231.943 1262.143 1308.195 17359.695 500 # using.apply 285.907 303.907 315.824 331.264 731.917 500 #~~~~~~~~~~~~~ # SAME TEST, but larger set, much larger :_ DT.arts <- copy(DT.Nodes.Concs.artist) DT.arts[, node := NULL] dim(DT.arts) # [1] 49037 4 microbenchmark(noname=eval(noname), named.list=eval(named.list), using.apply=eval(using.apply), times=50L) # Unit: seconds # expr min lq median uq max neval # noname 1.926524 2.082955 2.124139 2.221157 2.424705 50 # named.list 1.928522 2.073543 2.161084 2.244328 2.554433 50 # using.apply 1.555528 1.650197 1.685819 1.739425 1.941478 50 ng.apply=(using.apply))