runhaskell
에서 프로그램을 실행할 때 성능 이상을 확인하려고합니다. 문제Runhaskell 성능 이상
이 프로그램은 다음과 같습니다
isFactor n = (0 ==) . (mod n)
factors x = filter (isFactor x) [2..x]
main = putStrLn $ show $ sum $ factors 10000000
나는이 실행
, 그것은 1.18 초 정도 걸립니다.그러나, 나는 isFactor
로 재정의하는 경우 :
isFactor n f = (0 ==) (mod n f)
다음 프로그램이 17.7 초 정도 걸립니다.
성능면에서 엄청난 차이가 있으며 프로그램이 동등 할 것으로 기대합니다. 아무도 내가 여기서 뭘 놓치고 있는지 알아?
참고 : GHC에서 컴파일 할 때 발생하지 않습니다.
내 생각에 runhaskell은 단지 몇 가지 최적화를 수행하기 때문에 두 번째 것은 특정 엄격 성 문제가 있습니다. – fuz