在R中是否有衡量函数执行时间的标准化方法?

显然我可以用系统。时间,然后取它们的差异,但我想知道是否有一些标准化的方法或功能(不想发明轮子)。


我似乎记得我曾经用过如下的东西:

somesysfunction("myfunction(with,arguments)")
> Start time : 2001-01-01 00:00:00  # output of somesysfunction
> "Result" "of" "myfunction"        # output of myfunction
> End time : 2001-01-01 00:00:10    # output of somesysfunction
> Total Execution time : 10 seconds # output of somesysfunction

当前回答

如果你喜欢,你可以使用matlab风格的tic-toc函数。看另一个SO问题

秒表功能在R

其他回答

还有proc.time()

你可以用和Sys一样的方法使用。Time但是它给你的结果和system。Time类似。

ptm <- proc.time()
#your function here
proc.time() - ptm

主要区别使用

system.time({ #your function here })

proc.time()方法仍然执行你的函数,而不是仅仅测量时间… 顺便说一下,我喜欢使用系统。时间{}在里面,所以你可以把一组东西…

另一种可能的方法是使用Sys.time():

start.time <- Sys.time()
...Relevent codes...
end.time <- Sys.time()
time.taken <- end.time - start.time
time.taken

与上面的答案相比,这不是最优雅的方法,但绝对是一种方法。

正如Andrie所说,system.time()工作正常。对于短函数,我更喜欢在其中放入replication ():

system.time( replicate(10000, myfunction(with,arguments) ) )

有几个答案提到取两个Sys.time()的差值。

start <- Sys.time()
## ... code here ... ##
end <- Sys.time()
end - start

这将以人类可读的格式打印结果,例如“2秒的时间差”。但是,由于单位可以变化(从“秒”到“分钟”到“天”),因此,如果多个运行时的单位不同,那么使用此方法在相同基础上比较它们就不太有用。

对于非交互目的,最好指定时间单位。

具体来说,Sys.time()返回一个POSIXct对象。取两个posixct的差值,给出一个difftime类的对象,该对象具有“units”属性。特别是' - '操作被定义为在与POSIXct一起使用时使用difftime()。也就是说,

time2 - time1

等于

difftime(time2, time1)

要指定units属性,添加一个units=参数,例如。

difftime(time2, time1, units="secs")

总而言之,可以使用Sys.time()用指定的单位(秒、分等)来测量运行时。

start <- Sys.time()
## ... code here ... ##
end <- Sys.time()
difftime(end, start, units="secs")

如果你喜欢,你可以使用matlab风格的tic-toc函数。看另一个SO问题

秒表功能在R