Microbenchmark 可用于估计其他快速程序所需的时间。例如,考虑估计打印 hello world 所需的时间。
system.time(print("hello world")) # [1] "hello world" # user system elapsed # 0 0 0
这是因为system.time本质上是 的包装函数proc.time,以秒为单位进行测量。由于打印“hello world”花费的时间不到一秒钟,因此看起来花费的时间不到一秒钟,但事实并非如此。为了看到这一点,我们可以使用包微基准:
library(microbenchmark) microbenchmark(print("hello world")) # Unit: microseconds # expr min lq mean median uq max neval # print("hello world") 26.336 29.984 44.11637 44.6835 45.415 158.824 100
在这里我们可以看到运行print("hello world")100 次后,平均花费的时间实际上是 44 微秒。(请注意,运行此代码将在控制台上打印 100 次“hello world”。)
我们可以将其与等效过程 比较cat("hello world\n"),看看它是否比 快print("hello world"):
microbenchmark(cat("hello world\n")) # Unit: microseconds # expr min lq mean median uq max neval # cat("hello world\\n") 14.093 17.6975 23.73829 19.319 20.996 119.382 100
在这种情况下cat(),速度几乎是print().
或者,可以比较同一microbenchmark调用中的两个过程:
microbenchmark(print("hello world"), cat("hello world\n")) # Unit: microseconds # expr min lq mean median uq max neval # print("hello world") 29.122 31.654 39.64255 34.5275 38.852 192.779 100 # cat("hello world\\n") 9.381 12.356 13.83820 12.9930 13.715 52.564 100