[r] R에서 기능 실행 시간 측정

R의 기능 수행 시간을 측정하는 표준화 된 방법이 있습니까?

분명히 나는 system.time실행 전후에 그 차이를 취할 수 있지만 표준화 된 방법이나 기능이 있는지 알고 싶습니다 (바퀴를 발명하고 싶지는 않습니다).


나는 한 번 아래와 같은 것을 사용했음을 기억합니다.

somesysfunction("myfunction(with,arguments)")
> Start time : 2001-01-01 00:00:00  # output of somesysfunction
> "Result" "of" "myfunction"        # output of myfunction
> End time : 2001-01-01 00:00:10    # output of somesysfunction
> Total Execution time : 10 seconds # output of somesysfunction



답변

이를 수행하는 또 다른 방법은 Sys.time ()을 사용하는 것입니다.

start.time <- Sys.time()
...Relevent codes...
end.time <- Sys.time()
time.taken <- end.time - start.time
time.taken

위의 답변과 비교할 때 가장 우아한 방법은 아니지만 확실히하는 방법입니다.


답변

내장 기능 system.time() 가이를 수행합니다.

다음과 같이 사용하십시오. system.time(result <- myfunction(with, arguments))


답변

Andrie가 말했듯 system.time()이 잘 작동합니다. 짧은 기능을 위해 나는 replicate()그것을 넣는 것을 선호 합니다.

system.time( replicate(10000, myfunction(with,arguments) ) )


답변

실행 시간을 측정하는 약간 더 좋은 방법은 rbenchmark 를 사용하는 것입니다. 패키지 입니다. 이 패키지를 사용하면 테스트를 몇 번이나 복제하고 상대 벤치 마크를 수행 할 것인지 지정할 수 있습니다.

stats 에서 관련 질문도 참조하십시오.


답변

microbenchmark 가볍고 (~ 50kB) 패키지이며 여러 표현식과 함수를 벤치마킹하기위한 R의 표준 방식입니다.

microbenchmark(myfunction(with,arguments))

예를 들면 다음과 같습니다.

> microbenchmark::microbenchmark(log10(5), log(5)/log(10), times = 10000)
Unit: nanoseconds
           expr min lq    mean median uq   max neval cld
       log10(5)   0  0 25.5738      0  1 10265 10000   a
 log(5)/log(10)   0  0 28.1838      0  1 10265 10000

여기서 두 식 모두 10000 회 평가되었으며 평균 실행 시간은 약 25-30ns입니다.


답변

도 있습니다 proc.time()

같은 방식으로 Sys.time사용할 수 있지만와 비슷한 결과를 얻을 수 system.time있습니다.

ptm <- proc.time()
#your function here
proc.time() - ptm

사용의 주요 차이점

system.time({ #your function here })

proc.time()방법은 시간을 측정하는 대신 여전히 함수를 실행 한다는 것입니다 … 그리고 내부 system.time와 함께 사용 하고 싶습니다 {}.


답변

“tictoc”패키지는 실행 시간을 측정하는 매우 간단한 방법을 제공합니다. 설명서는 https://cran.fhcrc.org/web/packages/tictoc/tictoc.pdf에 있습니다.

install.packages("tictoc")
require(tictoc)
tic()
rnorm(1000,0,1)
toc()

경과 시간을 변수에 저장하려면 다음을 수행하십시오.

install.packages("tictoc")
require(tictoc)
tic()
rnorm(1000,0,1)
exectime <- toc()
exectime <- exectime$toc - exectime$tic