在基准测试期间多次运行 R 中的函数

发布于 2024-11-27 11:21:27 字数 84 浏览 0 评论 0原文

我正在尝试使用 system.time() 测量 R 中函数的计算时间。 我想运行该函数数百次以获得平均值,但我不想 复制并粘贴多次。有更简单的方法吗?

I am trying to measure the computation time of a function in R using system.time().
I want to run the function a few hundred times to get an average but I don't want
to copy and paste that many times. Is there an easier way to do that?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

星星的轨迹 2024-12-04 11:21:27

microbenchmark 包采用 ,times= 选项,并且具有更准确的额外好处。

> library(microbenchmark)
> m <- microbenchmark( seq(10)^2, (1:10)^2, times=10000)
> m
Unit: nanoseconds
       expr   min    lq median    uq     max
1  (1:10)^2  2567  3423   3423  4278   41918
2 seq(10)^2 44484 46195  46195 47051 1804147
> plot(m)

plot microbenchmark

并使用 ggplot2 尚未发布的 autoplot() 方法:

autoplot(m)

autoplot microbenchmark

The microbenchmark package takes a ,times= option and has the added bonus of being a bit more accurate.

> library(microbenchmark)
> m <- microbenchmark( seq(10)^2, (1:10)^2, times=10000)
> m
Unit: nanoseconds
       expr   min    lq median    uq     max
1  (1:10)^2  2567  3423   3423  4278   41918
2 seq(10)^2 44484 46195  46195 47051 1804147
> plot(m)

plot microbenchmark

And using the not-yet-released autoplot() method for ggplot2:

autoplot(m)

autoplot microbenchmark

审判长 2024-12-04 11:21:27
system.time(replicate (  ... stuff ..) )

或者:(嘿,我并不为拥有与德克相同的答案而感到羞耻。)

require(rbenchmark)
benchmark( stuff... )   # Nice for comparative work
system.time(replicate (  ... stuff ..) )

Or: (hey, I'm not ashamed to have the same answer as Dirk.)

require(rbenchmark)
benchmark( stuff... )   # Nice for comparative work
孤千羽 2024-12-04 11:21:27

您想要使用 rbenchmark 包及其函数 benchmark() ,它的作用差不多一切都为了你。

这是其帮助页面中的第一个示例:

R> example(benchmark)

bnchmrR> # example 1
bnchmrR> # benchmark the allocation of one 10^6-element numeric vector, 
bnchmrR> # replicated 100 times
bnchmrR> benchmark(1:10^6)
    test replications elapsed relative user.self sys.self user.child sys.child
1 1:10^6          100   0.327        1      0.33        0          0         0

对于真正的表达式级基准测试,还有 microbenchmark 包。

You want to use the rbenchmark package and its function benchmark() which does just about everything for you.

Here is the first example from its help page:

R> example(benchmark)

bnchmrR> # example 1
bnchmrR> # benchmark the allocation of one 10^6-element numeric vector, 
bnchmrR> # replicated 100 times
bnchmrR> benchmark(1:10^6)
    test replications elapsed relative user.self sys.self user.child sys.child
1 1:10^6          100   0.327        1      0.33        0          0         0

For truly expression-level benchmarking, there is also the microbenchmark package.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文