我想了解R& minibenchmark和system.time()之间的区别?他们如何在内部测量功能执行时间?
答案 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}}的从属版本。