我注意到lockEnvironment
函数,并且想知道是否/何时应该将它用于环境。我经常使用环境作为查找表,因为作为哈希表,它们比列表更快。锁定环境可以提高性能吗?
我做了一些测试,但无法找到差异:
> library(microbenchmark)
> lst = as.list(paste0(rep(letters,each=10),1:10))
> names(lst) = lst
> a = list2env(lst,hash=TRUE,parent=emptyenv())
> b = list2env(lst,hash=TRUE,parent=emptyenv())
> lockEnvironment(b,bindings=TRUE)
> microbenchmark(a$z1,b$z1)
Unit: nanoseconds
expr min lq median uq max neval
a$z1 612 615 623.5 679.0 6238 100
b$z1 613 615 619.5 675.5 1943 100
仅锁定可靠性功能还是存在性能差异?
答案 0 :(得分:2)
lockEnvironment
主要由R内部使用,以在加载后锁定包环境。锁定环境的好坏不应该对性能产生任何影响。