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()
函数。
对于代码片段
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()
函数。