Sys.time() 的差异是 R 中可靠的执行时间估计吗?

Is difference of Sys.time() a reliable execution time estimate in R?

对于代码片段

start <- Sys.time()
Sys.sleep(2)
end <- Sys.time()
print(paste('Time difference :', end-start))

输出没有意外

[1] "Time difference : 2.01378774642944"

但是对于下面的代码片段:

start <- Sys.time()
x <- matrix(rnorm(7500000), nrow=500, ncol=15000)
x <- cor(x)
end <- Sys.time()
print(paste('Time difference :', end-start))

我得到的输出为:

[1] "Time difference : 1.20198894341787"

但是,在我的笔记本电脑上执行此代码片段实际上需要大约 50 秒。

为什么会有这种差异? 这不是衡量执行时间的理想方式吗?

这是我试过的输出

第一个例子 - 计算输出是 2.2...,它在第二个。

> start <- Sys.time()
> Sys.sleep(2)
> end <- Sys.time()
> print(paste('Time difference :', end-start))
[1] "Time difference : 2.20864367485046"
> difftime(end, start, units = "mins")
Time difference of 0.03681073 mins

第二个例子 - 计算输出是 1.77... 并且以分钟为单位

> start <- Sys.time()
> x <- matrix(rnorm(7500000), nrow=500, ncol=15000)
> x <- cor(x)
> end <- Sys.time()
> print(paste('Time difference :', end-start))
[1] "Time difference : 1.77510009209315"
> difftime(end, start, units = "mins")
Time difference of 1.7751 mins

您可以看到您输出的时差实际上是以分钟为单位,但没有说明是分钟还是秒,所以会造成混淆。我建议您改用 difftime() 函数。