当给出"大"问题时,data.table的力量会闪耀.开销[.data.table
将使实际花费在二进制搜索组件上的时间相形见绌.
如果你给它一个"大"问题,那么data.table
将扩展,你会看到差异.
# a "bigger" problem a <- c(55, 1:25e6) b <- c(55,30:40e6) library(data.table) dt.a <- data.table(x=a,key="x") dt.b <- data.table(x=b,key="x") library(microbenchmark) microbenchmark(intersect(a,b), dt.a[dt.b, nomatch=0],times=5) ## Unit: seconds ## expr min lq median uq max neval ## intersect(a, b) 6.848245 6.897009 6.962055 7.052095 7.058509 5 ## dt.a[dt.b, nomatch = 0] 3.629062 3.654269 3.685051 3.721983 3.815155 5