

using `get()` vs using `.BY[]`

getting <- quote(DB.mini[1:50000, list(hour(get(dateTimeCol)), yday(get(dateTimeCol))), by=dateTimeCol])
bying   <- quote(DB.mini[1:50000, list(hour(.BY[[1]]), yday(.BY[[1]])), by=dateTimeCol])
  
                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~              
                                       RESULTS:                                   
                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~              
                                                                                  
                                                                                  
       Measuring 'elapsed' time.                                                  
       Units: seconds                                   Number of Repetitions: 3  
                                                                                  
           Expr        relative      Median Time       MAD      (2xMAD)/Median    
      --------------|-------------|----------------|---------|------------------- 
         bying             1             2.53         0.04           3.2 %        
         getting         1.26            3.18         0.04           2.5 %        



using lubridate vs using data.table

N <- 50000
lub  <- quote(DB.mini[1:N, list(lubridate::hour(.BY[[1]]), lubridate::yday(.BY[[1]])), by=dateTimeCol])
dt <- quote(DB.mini[1:N, list(data.table::hour(.BY[[1]]), data.table::yday(.BY[[1]])), by=dateTimeCol])

mbench(dt, lub, times=5, checkEQUAL=FALSE)
 
                ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~            
                                     RESULTS:                                 
                ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~            
                                                                              
                                                                              
       Measuring 'elapsed' time.                                              
       Units: seconds                               Number of Repetitions: 5  
                                                                              
         Expr      relative      Median Time       MAD      (2xMAD)/Median    
      ----------|-------------|----------------|---------|------------------- 
         dt            1             4.9          0.02           0.8 %        
         lub          2.5           12.47         0.08           1.3 %        
    


COMPARING USING by vs not using by
by    <- quote(DB.mini[1:N, list(data.table::hour(.BY[[1]]), data.table::yday(.BY[[1]])), by=dateTimeCol])
notby <- quote(DB.mini[1:N, list(data.table::hour(get(dateTimeCol)), data.table::yday(get(dateTimeCol)))])
notby.explicit <- quote(DB.mini[1:N, list(data.table::hour(download_datetime), data.table::yday(download_datetime))])

N <- 50000
mbench(by, notby, notby.explicit, checkEQUAL = FALSE, maxDiffX=NULL)


                      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~                 
                                           RESULTS:                                      
                      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~                 
                                                                                         
                                                                                         
       Measuring 'elapsed' time.                                                         
       Units: seconds                                          Number of Repetitions: 3  
                                                                                         
              Expr            relative      Median Time       MAD      (2xMAD)/Median    
      ---------------------|-------------|----------------|---------|------------------- 
         notby.explicit           1             0.06           0            0.0 %        
                  notby          2.5            0.15           0            0.0 %        
                     by          82             4.94         0.04           1.6 %      