内容

1简介

CellBench提供了测量管道运行时间的能力。这是使用time_methods ()函数的运行方式与apply_methods ()是的,不同的是它不是并行运行的。这是一种有意的设计选择,因为并行运行通常会导致对计算机资源的竞争,因此产生不太可靠或稳定的计时。

2计时方法

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

- list(data1 = c(1,2,3)) #使用Sys. library(CellBench) #在列表数据集中包装一个简单的向量。sleep in函数模拟长时间运行的函数transform <- list(log = function(x) {Sys.sleep(0.1);log(x)}, sqrt = function(x) {Sys.sleep(0.1);√(x)}) # time函数res <- datasets %>% time_methods(transform) res
## #一个tibble: 2 × 3 ## data transform timed_result ##    ## 1 data1 log  ## 2 data1 sqrt 

我们通常在哪里吃结果我们现在有一列timed_result,这是一个包含两个对象的列表:计时对象和结果。有必要保存结果,以便我们可以把计算串在一起。

res timed_result美元[[1]]
## $计时##用户系统运行## 0.001 0.000 0.100 ## ## $结果## [1]0.0000000 0.6931472 1.0986123

就像……一样apply_methods (),可以应用更多的方法列表,结果将组合扩展。在这种情况下,计时将累积应用的方法。

transform2 <- list(+ = function(x) {Sys.sleep(0.1);x + 1},负=函数(x) {Sys.sleep(0.1);X - 1}) res2 <- datasets %>% time_methods(transform) %>% time_methods(transform2) res2
## #一个tibble: 4 x 4 ## data transform transform2 timed_result ##     ## 1 data1 log +  ## 2 data1 log -  ## 3 data1 sqrt +  ## 4 data1 sqrt - 

的结果类time_methods ()benchmark_timing_tbl.一旦应用了所有的方法,结果可能被丢弃使用unpack_timing ()并且可以将物体变换成更平坦的形状资源描述表示。看到proc_time ?来解释什么用户系统而且运行请参考。

计时值已转换为持续时间对象的lubridate包,这些表现为以秒为单位的数值测量,但具有更好的打印属性(尝试润滑::持续时间(1000,单位=“秒”)).

res2 %>% unpack_timing()
##数据转换:4 x 6 ##数据转换用户系统运行##    <持续时间> <持续时间> <持续时间> ## 1数据a1日志+ 0.003s 0s 0.203 3s ## 2数据a1日志- 0.003s 0s 0.203 3s ## 3数据a1 sqrt + 0.006s 0s 0.205s ## 4数据a1 sqrt - 0.005s 0s 0.206s

或者,计时信息可以被丢弃benchmark_tbl可以使用strip_timing ()

res2 %>% strip_timing()
## #一个tibble: 4 x 4 ## data transform transform2 result ##     ## 1 data1 log +  ## 2 data1 log minus  ## 3 data1 sqrt +  ## 4 data1 sqrt minus 

3.总结

CellBench提供了一种简单的方法,可以通过各种方法的组合来测量管道的运行时间。这是用time_methods ()函数,以相同的方式调用apply_methods ()具有相同的连锁性质。生成的对象可以通过两种有用的方式进行转换,如平面宠物猫将计时扩展为列并丢弃结果,或者将计时扩展为benchmark_tbl用结果作为一个list-column抛弃时机。