R: bench :: mark не возвращает максимум и среднее - PullRequest
1 голос
/ 19 апреля 2020

Рассмотрим следующий пример

res <- bench::mark(rnorm(1e5))
names(res)
#>  [1] "expression" "min"        "median"     "itr/sec"    "mem_alloc" 
#>  [6] "gc/sec"     "n_itr"      "n_gc"       "total_time" "result"    
#> [11] "memory"     "time"       "gc"

Я несколько сбит с толку, что среднее и максимальное время выполнения не включены, что противоречит странице справки. Скамья версия 1.0.4 и R 3.63.

Кто-нибудь знает, в чем здесь проблема?

1 Ответ

1 голос
/ 19 апреля 2020

Обычно полезно запустить

str(res)

, чтобы посмотреть, что выводит функция. В этом случае один из членов объекта ближе к концу равен

# $ time      :List of 1
#  ..$ : 'bench_time' num  12.3ms 16.1ms 17.9ms 12.3ms 13.4ms ...

. Это означает, что res$time - это список только с одним членом.
Таким образом, результаты сохраняются в res$time[[1]] и из него можно рассчитать среднее и максимальное значения.

Например, сравните median(res$time[[1]]) с напечатанным результатом. Они имеют одинаковую ценность.

median(res$time[[1]])
#[1] 12.3ms

А среднее и максимальное значение будет

mean(res$time[[1]])
#[1] 12.5ms
max(res$time[[1]])
#[1] 17.9ms
...