Ответ 1
1) Сроки зависят от операционной системы. В Windows вы можете получить только миллисекунды.
2) Не нужно определять tic()
и toc()
, R имеет system.time()
. Вот пример:
R> system.time(replicate(100, sqrt(seq(1.0, 1.0e6))))
user system elapsed
2.210 0.650 2.867
R>
3) Есть отличные дополнительные пакеты rbenchmark и microbenchmark.
3.1) rbenchmark особенно полезен для сравнения команд, но также может быть использован напрямую:
R> library(rbenchmark)
R> x <- seq(1.0, 1.0e6); benchmark(sqrt(x), log(x))
test replications elapsed relative user.self sys.self user.child sys.child
2 log(x) 100 5.408 2.85835 5.21 0.19 0 0
1 sqrt(x) 100 1.892 1.00000 1.62 0.26 0 0
R>
3.2) microbenchmark превосходит самые высокие показатели точности:
R> library(microbenchmark)
R> x <- seq(1.0, 1.0e6); microbenchmark(sqrt(x), log(x))
Unit: nanoseconds
expr min lq median uq max
1 log(x) 50589289 50703132 55283301 55353594 55917216
2 sqrt(x) 15309426 15412135 15452990 20011418 39551819
R>
и этот последний, особенно в Linux, уже дает вам нано-секунды. Он также может отображать результаты и т.д., Поэтому ознакомьтесь с этим пакетом.