Выполнение функций в R несколько раз во время бенчмаркинга

Я пытаюсь измерить время вычисления функции в R, используя system.time(). Я хочу запустить функцию несколько сотен раз, чтобы получить среднее значение, но я не хочу копировать и вставлять это много раз. Есть ли более простой способ сделать это?

Ответы

Ответ 1

Пакет 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

И используя еще не выпущенный метод autoplot() для ggplot2:

autoplot(m)

autoplot microbenchmark

Ответ 2

system.time(replicate (  ... stuff ..) )

Или: (эй, мне не стыдно иметь тот же ответ, что и Дирк.)

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

Ответ 3

Вы хотите использовать 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 пакет.