使用R microbenchmark和system.time有什么区别?

时间:2015-02-18 03:55:28

标签: r performance microbenchmark

我想了解R& minibenchmark和system.time()之间的区别?他们如何在内部测量功能执行时间?

1 个答案:

答案 0 :(得分:0)

在这两种情况下,运行时间都是使用操作系统工具计算的,所以 如何计算运行时间取决于操作系统。

?system.time的详细信息部分所述:

  

system.time调用proc.time函数,计算expr,然后   再次调用proc.time,返回两者之间的差异   proc.time电话。

proc.time是原始的,C代码在src/main/times.c中。该文件中的注释状态:

  

proc.time()使用currentTime()表示已用时间和getrusage   在Unix上类似于CPU时间的时间,Windows上的GetProcessTimes。


?microbenchmark页面的“注释”部分:

  

根据底层操作系统,有不同的方法   用于计时。在Windows上,QueryPerformanceCounter接口是   用来衡量过去的时间。对于Linux,clock_gettime API是   在Solaris上使用gethrtime函数。最后在MacOS X上,   未记录的,mach_absolute_time函数用于避免a   依赖于CoreServices Framework。

我找不到microbenchmark存储库,因此您必须下载源以查看确切的详细信息,但时间由do_microtiming中的src/nanotimer.c完成,该get_nanotime调用OS- src/nanotimer_nanotimer_gettime.h / src/nanotimer_nanotimer_macosx.h / src/nanotimer_nanotimer_rtposix.h / src/nanotimer_nanotimer_windows.h中{{1}}的从属版本。