【发布时间】:2020-09-22 21:04:16
【问题描述】:
t1 <- Sys.time()
mean((rnorm(10000))^2)
t2 <- Sys.time()
print(t2-t1)
print(" ")
t1 <- Sys.time()
mean((rnorm(10000))^2)
t2 <- Sys.time()
print(difftime(t2, t1, units = "secs")[[1]])
我想比较几个算法计算相同目标的时间效率,所以我尝试了上面的两种方法来提取Sys.time()计算的时间差。但是,两者都没有给出明确的数字。
[1] 0.9998752
Time difference of 0.03889418 secs
[1] " "
[1] 0.9832738
[1] 0.05183697
我也试过proc.time()。将这 3 个数值提取到向量中会很棒,但 as.numeric(t)、t[0]、t['user'] 和 t[['user']] 都不起作用。这些是我在网上找到的一些相关解决方案。如何从计时结果中得到一个(或三个都可以)整齐的数字?
t1 <- proc.time()
mean((rnorm(10000))^2)
t2 <- proc.time()
t <- t2 - t1
print(" ")
print(t)
[1] " "
user system elapsed
0.00 0.02 0.17
在 R 中是否有等效的方法来执行以下代码在 Python 中的操作?
import numpy as np
from time import process_time
t = process_time()
np.mean(np.random.normal(loc=0,scale=1,size=10000))
t = process_time() - t
print(t)
【问题讨论】:
-
as.numeric有一个difftime对象的方法 -as.numeric(t2 - t1, units="secs")。指定你想要的单位然后离开! -
@thelatemail 也许我没明白你的意思。我试过
as.numeric(t2-t1, units='secs')和as.numeric(difftime(t2, t1, units='secs')),都没有得到一个整洁的数字。 -
对我有用
Sys.time结果 -t1 <- Sys.time(); Sys.sleep(3); t2 <- Sys.time(); as.numeric(t2 - t1, units="secs") -
@thelatemail 谢谢,但恐怕它对我不起作用。它输出两个未命名的数字:[1] 0.9842054 [1] 0.04188514
-
鉴于我提供的代码,这些数字实际上是不可能的,因为我在计算
t1和t2之间强制等待 3 秒。
标签: r timing named systemtime