如何对 R 中的子程序进行微基准测试?
How to microbenchmark subroutines in R?
我编写了一个 R
函数 f
,它调用子例程 f1
和 f2
。说
f1 <- function() Sys.sleep(0.1)
f2 <- function() Sys.sleep(0.2)
f <- function(){
f1()
f2()
}
我想对 f
及其子程序的性能进行基准测试,以找出哪些子程序可以在运行时方面得到改进。不幸的是 microbenchmark
只给出了 f
的运行时间:
microbenchmark(f(), times = 10) # gives
Unit: milliseconds
expr min lq mean median uq max neval
f() 302.0776 309.7246 312.5698 312.9659 314.0021 327.6248 10
我想获得 f
中调用的子程序的统计信息。像
Unit: milliseconds
expr min lq mean median uq max neval
f1() 100.0000 107.0000 115.0000 115.0000 117.0000 127.0000 10
f2() 202.0000 209.0000 212.0000 212.0000 214.0000 227.0000 10
正如评论中所述,分析您的函数是找出子例程时间的方法。
Hadley Wickham 提到的软件包已被弃用,取而代之的是 profvis
,所以我认为 profvis 是一个不错的选择。
我编写了一个 R
函数 f
,它调用子例程 f1
和 f2
。说
f1 <- function() Sys.sleep(0.1)
f2 <- function() Sys.sleep(0.2)
f <- function(){
f1()
f2()
}
我想对 f
及其子程序的性能进行基准测试,以找出哪些子程序可以在运行时方面得到改进。不幸的是 microbenchmark
只给出了 f
的运行时间:
microbenchmark(f(), times = 10) # gives
Unit: milliseconds
expr min lq mean median uq max neval
f() 302.0776 309.7246 312.5698 312.9659 314.0021 327.6248 10
我想获得 f
中调用的子程序的统计信息。像
Unit: milliseconds
expr min lq mean median uq max neval
f1() 100.0000 107.0000 115.0000 115.0000 117.0000 127.0000 10
f2() 202.0000 209.0000 212.0000 212.0000 214.0000 227.0000 10
正如评论中所述,分析您的函数是找出子例程时间的方法。
Hadley Wickham 提到的软件包已被弃用,取而代之的是 profvis
,所以我认为 profvis 是一个不错的选择。