关于R 4.2.0至4.3.1中&操作(惰性求值)性能反转的问询
向量逻辑
&操作的惰性求值性能基准测试差异问题 以下是用于对比向量中利于或不利于惰性求值的相反条件下&操作性能的基准测试代码:
set.seed(1) N <- 1e6 V <- runif(N) v1 <- V > 0.1 v2 <- V > 0.4 v3 <- V > 0.9 mb_res_le <- microbenchmark::microbenchmark( times = 100, unit = "ms", v1 & v2 & v3, v3 & v2 & v1 ) ggplot2::autoplot(mb_res_le)

我理解R 4.2.0的测试结果:当&左侧存在更多FALSE时,因惰性求值机制,代码执行更快。但R 4.3.1中相同测试的结果却完全相反,这让我无法理解。
4.2.0与4.3.1之间有多个版本,该变化可能在其中某个版本引入,但我在对应版本的发行说明中找不到相关解释。
R 4.3.1的结果令我惊讶,因此我测试了更早的版本,这些版本的性能差异符合我的预期。
[已添加set.seed(1)并更新图表]
内容的提问来源于stack exchange,提问作者B.Gao
相关产品推荐
相关产品推荐

