data.table benchmarks

#--------------------------------------------------------#
# gsub inside or outside of an unlist:  
#         OUTSIDE is faster
#--------------------------------------------------------#


    # sample data #
    miniConc <- data.table(structure(list(concertID = c(133901L, 137202L, 144781L, 146967L, 149011L, 149366L, 151833L, 161145L, 163169L, 164005L, 164433L, 165760L, 166113L), lineUp.string = c("Tiesto", "Don Henley", "Downtown Fever", "Salute to Gospel", "Gary Allan", "Angus & Julia Stone, Moddi", "Hot Hot Heat", "They Might Be Giants, Jonathan Coulton", "Mac Miller, The Cool Kids, The Come Up", "Roger Waters", "Daughtry, SafetySuit, Mike Sanchez", "John Mellencamp", "Civil Wars, The Staves")), .Names = c("concertID", "lineUp.string"), row.names = c(NA, -13L), class = c("data.table", "data.frame"), sorted = "concertID"), key="concertID")
    miniConc[, lineUp.list := c(strsplit(as.character(lineUp.string), ","))] 
    for (i in 1:4)
      miniConc <- rbind(miniConc, miniConc, miniConc, miniConc, miniConc, miniConc, miniConc, miniConc)

    # Options #
     outside <- quote(miniConc[,   list(    artist=gsub("^\\s+|\\s+$", "", unlist(lineUp.list[[1]])),
                             slot=seq_along(lineUp.list[[1]]), 
                       totalSlots=length(lineUp.list[[1]])
                     ), 
                   by=list(concertID, lineUp.string) ])
     inside <- quote(miniConc[,   list(    artist=unlist(gsub("^\\s+|\\s+$", "", lineUp.list[[1]])),
                             slot=seq_along(lineUp.list[[1]]), 
                       totalSlots=length(lineUp.list[[1]])
                     ), 
                   by=list(concertID, lineUp.string) ])

     > benchmark(inside, outside, replications=3e4, order="relative")
         test replications elapsed relative user.self sys.self user.child sys.child
    2 outside        30000   0.113    1.000     0.111    0.002          0         0
    1  inside        30000   0.138    1.221     0.119    0.020          0         0

#--------------------------------------------------------#





#----------------------------------------------------------------------------#
#     THIS IS DIFFERENT ON MY MACPRO THAN ON THE NBS SYSTEM.  COULD BE THAT DIFFERENCE IS TOO SMALL TO MEASURE
#----------------------------------------------------------------------------#
copying <- quote(
{  concerts.skinny <- copy(concerts[, list(concertID, lineUp.string)]) ;
  concerts.skinny[, lineUp.list := c(strsplit(as.character(lineUp.string), ","))];

  setkey(concerts.skinny, concertID, lineUp.string);
  minTmp <- copy(concerts.skinny[,   
             list(artistName = gsub("^\\s+|\\s+$", "", unlist(lineUp.list[[1]])), 
                        slot = seq_along(lineUp.list[[1]]), 
                  totalSlots = length(lineUp.list[[1]])
                  ), by = list(concertID, lineUp.string)]);

  concerts.skinny <- copy(concerts.skinny[minTmp])}
  )
#----------------------------------------------------------------------------#
assigning <- quote(
  {concerts.skinny <- copy(concerts[, list(concertID, lineUp.string)]) ;
    concerts.skinny[, lineUp.list := c(strsplit(as.character(lineUp.string), ","))];
  
    setkey(concerts.skinny, concertID, lineUp.string);
    minTmp <- copy(concerts.skinny[,   
               list(artistName = gsub("^\\s+|\\s+$", "", unlist(lineUp.list[[1]])), 
                          slot = seq_along(lineUp.list[[1]]), 
                    totalSlots = length(lineUp.list[[1]])
                    ), by = list(concertID, lineUp.string)]);
  
    concerts.skinny <- concerts.skinny[minTmp]}
  )
#----------------------------------------------------------------------------#
benchmark(copying, assigning, order="relative", replications=300)
