Выполнение функций в 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 пакет.