Haskell 함수 실행 시간
Haskell에서 함수 실행 시간을 계산하는 간단한 방법이 있습니까?
간단한 일들은하는 것입니다 :set +s에 ghci, 그리고 당신은 메모리 사용과 함께 실행할 아무것도의 실행 시간을 볼 수 있습니다.
criterion패키지 이 잘 수행하기 위해 특별히 만들어졌다.
http://hackage.haskell.org/package/timeit이 귀하의 요구에 맞는지 확인 하십시오 .
함수 실행 시간 벤치 마크는 Criterion에 포함됩니다.
예를 들어, 시간을 캡처하려면 someIOFunction :: IO ()
import Criterion.Measurement
main = secs <$> time_ someIOFunction >>= print
Criterion은 시작하기가 어려웠지만 가장 정교한 방법이며 벤치마킹 프로그램을 대상으로하는 것 같습니다. 나는 실행 시간을 계산하고 내 프로그램 내에서 그 데이터를 사용하고 싶었는데이 요구 사항을 해결하지 못하는 것 같지만 적어도 즉각적인 것은 아닙니다.
시간 순수한 기능을 잘 처리하지 않는 것을 제외하고는 매우 간단하고 내가 원하는 것을 수행합니다. 순수 함수에 대해 반환되는 시간은 썽크 할당 시간 (AFAIK)이며 seq를 사용하더라도 원하는 것을 얻는 것이 어려울 수 있습니다.
나를 위해 일하는 것은 TimeIt을 기반으로합니다.
import System.TimeIt
timeItTPure :: (a -> ()) -> a -> IO (Double,a)
timeItTPure p a = timeItT $ p a `seq` return a
timeItTPure pa에서 p는 좋은 평가 타이밍을 얻기 위해 필요한만큼 순수 계산의 결과 a를 평가하는 기능입니다. 아마도 이것은 단순한 패턴 일치 일 수도 있고, 아마도 목록의 길이를 세는 것일 수도 있고, 아마도 목록의 모든 요소를 seq, 아마도 그것의 deepseq 등일 수도 있습니다.
seq의 사용은 까다 롭습니다. 아래 기능은 원하는대로 수행되지 않습니다. Haskell은 신비한 것입니다.
badTimeItTPure a = timeItT . return $ seq (p a) a
참고 URL : https://stackoverflow.com/questions/6766450/haskell-function-execution-time
'Program Club' 카테고리의 다른 글
| SQL Server의 고유 키 위반-오류 2627을 가정해도 안전합니까? (0) | 2020.11.10 |
|---|---|
| X-Macros의 실제 사용 (0) | 2020.11.10 |
| Rails 앱에서 httparty로 기본 인증을 사용하는 방법은 무엇입니까? (0) | 2020.11.10 |
| composer로 개발 종속성을 제거하는 방법이 있습니까? (0) | 2020.11.10 |
| Pandas의 여러 데이터 프레임 열에서 "고유 한 선택"방법은 무엇입니까? (0) | 2020.11.10 |