小编Jon*_*nas的帖子

为什么range()函数比min和max的组合慢?

我遇到了R的range功能。它肯定是有用的工具,并使代码更具可读性,但是通过将其替换为简单的单行代码包括min和可以使其速度提高一倍max

我做了一些基准测试,范围函数的“糟糕”表现令我感到惊讶。为了进行比较,我编写了一个名为range2min和max 的函数(请参见代码)。除了速度之外,如果可以通过简单的单线(也易于阅读)来执行此功能,那么是否有任何原因为什么存在此功能?

require(microbenchmark)

range2 <- function(x) c(min(x),max(x))  

n <- 1000000
x <- rnorm(n)
microbenchmark(range(x), range2(x))
#Unit: milliseconds
#  expr      min       lq     mean   median       uq     max neval cld
# range(x) 4.696101 4.734751 5.321603 4.796301 4.814751 23.0646   100   b
#range2(x) 2.477602 2.516101 2.542540 2.535051 2.544052  3.7636   100  a 

n <- 10000000
x <- rnorm(n)
microbenchmark(range(x), range2(x))
# Unit: milliseconds
#  expr     min      lq     mean   median       uq      max neval cld
# range(x) 47.3246 47.9498 …
Run Code Online (Sandbox Code Playgroud)

performance r range max min

10
推荐指数
1
解决办法
172
查看次数

标签 统计

max ×1

min ×1

performance ×1

r ×1

range ×1