[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