readProcess
(System.Process
패키지에서) ssh 명령을 실행 중이며 실행 시간이 얼마나 걸리는지 시간을 기록하고 싶습니다. 명령 출력.readProcess (조건없이) 실행 시간을 측정하는 간단한 방법을 찾고
기준으로 정확하게 시간을 측정 할 수는 있지만 시간이 오래 걸리며 추가 출력물 인쇄뿐만 아니라 많은 설정과 분해가 필요합니다. 나는 전체 벤치 마크를 실행하지 않고 ssh 명령이 실행되는 데 걸린 시간을 표시합니다.
지금까지 System.TimeIt
패키지를 사용해 보았지만 결과가 잘못되었습니다. 예를 들어,이보고해야 적어도 5 초 (단지 sleep 5
를 실행) :
>>> timeIt $ readProcess "sleep" ["5"] []
CPU time: 0.04s
가 System.TimeIt
는 후드하고있는 작업은 다음과 같습니다
-- |Wrap an 'IO' computation so that it prints out the execution time.
timeIt :: IO a -> IO a
timeIt ioa = do
(t, a) <- timeItT ioa
printf "CPU time: %6.2fs\n" t
return a
-- |Wrap an 'IO' computation so that it returns execution time is seconds as well as the real value.
timeItT :: IO a -> IO (Double, a)
timeItT ioa = do
t1 <- getCPUTime
a <- ioa
t2 <- getCPUTime
let t :: Double
t = fromIntegral (t2-t1) * 1e-12
return (t, a)
그것은 충분히 간단 보인다,하지만 난 알아낼 수 없습니다 a <- ioa
의 실행을 강제하는 방법. !
으로 주석을 달면 아무런 차이가없는 것처럼 보입니다.
감사합니다.
고마워요! 그건 의미가 있습니다. '''getCurrentTime'''는 원하는 결과를 제공합니다. – jhickner