锁定环境比解锁环境更快吗?

时间:2014-09-17 13:30:26

标签: r

我注意到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

仅锁定可靠性功能还是存在性能差异?

1 个答案:

答案 0 :(得分:2)

lockEnvironment主要由R内部使用,以在加载后锁定包环境。锁定环境的好坏不应该对性能产生任何影响。