内容

1介绍

CellBench能够测量管道的运行时间。这是使用来完成的time_methods ()函数以同样的方式运行apply_methods ()的区别,它不并行运行。这是一个有意的设计选择,因为并行运行的事情通常会导致一些对计算机资源的竞争,因此产生不可靠或稳定的计时。

2计时方法

计时方法的设置是相同的应用方法。你有一个列表的数据和函数的列表,然后使用time_methods ()而不是apply_methods ()

库(CellBench) #包装列表中的一个简单的矢量数据集< -列表(data1 = c(1、2、3) #使用系统。睡在函数来模拟长时间运行的函数变换< -列表(日志=函数(x) {Sys.sleep (0.1);日志(x)}, sqrt函数(x) = {Sys.sleep (0.1);sqrt (x)}) #一次函数res < -数据集% > % time_methods res(变换)
# # #一个宠物猫:2×3 # #数据变换timed_result # # < fct > < fct > <列表> # # 1 data1日志<命名列表[2]> # # 2 data1√<命名列表[2]>

我们通常在哪里结果我们现在有列timed_result,这是一个列表的两个对象:对象和时机的结果。有必要保持,这样我们可以一起链计算的结果。

res timed_result美元[[1]]
用户系统运行时间# # $ # # # # 0.002 0.000 0.101 # # # # # #[1]结果0.0000000 0.6931472 1.0986123美元

是这样的apply_methods (),更多的列表可以应用的方法和结果将扩大组合。本例中的计时将累积的方法应用。

transform2 < -列表(+ = function (x) {Sys.sleep (0.1);x + 1} - = function (x) {Sys.sleep (0.1);x - 1})它< -数据集% > % time_methods(变换)% > % time_methods (transform2)它
# # #一个宠物猫:4×4 # #数据变换transform2 timed_result # # < fct > < fct > < fct > <列表> # # 1 data1日志+ <命名列表[2]> # # 2 data1日志- <命名列表[2]> # # 3 data1√6 + <命名列表[2]> # # 4 data1√6 -[2] > <命名的列表

类的结果time_methods ()benchmark_timing_tbl。一旦应用了所有方法,结果可能丢弃的使用unpack_timing ()和对象可以转化成更平坦资源描述表示。看到proc_time ?的解释用户,系统运行请参考。

已经转换成时间值持续时间对象的lubridate在几秒钟内包,这些像数字测量但有更好的印刷特性(试一试lubridate:持续时间(1000年,单位=“秒”))。

#丢弃结果,扩大了计时到列它% > % unpack_timing ()
# # #一个宠物猫:4×6 # #数据变换transform2用户系统运行# # < fct > < fct > < fct > <时间> <时间> <时间> # # 1 data1日志+ 0.003 0年代0.203 # # 2 data1日志- 0.003年代0 0.203 # # 3 data1√6 + 0.005秒0 0.206 # # 4 data1√6 - 0.005 0.205 0年代

另外,可以丢弃和计时信息benchmark_tbl可以生产使用strip_timing ()

#丢弃计时和生产benchmark_tbl对象它% > % strip_timing ()
# # #一个宠物猫:4×4 # #数据变换transform2结果# # < fct > < fct > < fct > <列表> # # 1 data1日志+ <双[3]> # # 2 data1日志- <双[3]> # # 3 data1√6 + <双[3]> # # 4 data1√6 - <双[3]>

3总结

CellBench提供了一个简单的方法来测量管道的运行时间的各种组合方法。这是完成了time_methods ()函数叫做相同的方式apply_methods ()和有相同的链接属性。合成对象可以转换在两个有用的方面,作为一个平的宠物猫由于计时作为扩展列和丢弃的结果,或作为一个benchmark_tbl与结果list-column和丢弃计时。