2017-09-21 1 views
1

My Haskell 프로그램을 컴파일하는 데 너무 오래 걸립니다.벤치마킹 GHC 컴파일 시간

그 말은 다음과 같습니다. -O1을 사용하여 컴파일 한 지 1 년이 지났습니다. 내가 시도한 마지막 시간에 필자는 내 프로그램을 컴파일하기 위해 64GB 서버를 설정하고 밤새 실행했습니다. 그것은 추리했다.

저는 컴파일 시간을 단축 할 수있는 몇 가지 큰 리엔지니어링 변경 사항에 착수하려고합니다.하지만 먼저 무엇이 오래 걸릴지 알아야하며, 진행 상황을 추적 할 수있는 좋은 측정을해야합니다. 내가 다른 조각과 타이밍 을 컴파일 시도 할 수 있도록

  1. 이 플래그에 내 프로그램을 커버 :

    나는 현재이 작업을 수행하는 방법에 대한 두 가지 아이디어가 있습니다.

  2. "[75 of 83] Compiling"과 같은 줄을 찾는 stack build의 래퍼 프로그램을 작성하고 그 사이의 시간 간격.

(1)은 정말 못생긴데, (2) 부정확성 때문에 그리고 모듈 간 컴파일로 인해 (2) 좋은 숫자를 줄 것으로 기대하지 않습니다. 누구나 더 좋은 아이디어가 있습니까?

+0

당신은 메모리가 부족 실행하는 경우 다음 몇 가지 나쁜 타격 GHC에서의 asymptotics와 (2) 아마 당신이 모듈을 의존성 트리로 볼 수 있다면 도움이 될 것이다. (1) 또한 내가 TBH 할 것처럼 들린다. 속도가 느려지거나 테스트 사례를 얻을 수있는 경우 반드시 GHC trac에보고해야합니다. – jberryman

+0

4 년 전,이 프로젝트의 전신 인 저는 Generic이 관련된 typeclass resolution과 관련하여 느린 속도의 원인을 확인했습니다. trac에서 이미보고되었습니다. 필자의 지식에 따르면 성능 문제는 아직 해결되지 않았습니다. 코드의 해당 부분을 삭제했습니다. 4 년 후, 내 코드에서 여전히 NFData 인스턴스가 누락되었습니다. –

+0

내 모듈의 종속성 트리를 어떻게 볼 수 있으며 종속성 정보없이 제안 (2)과 비교하면 어떻게 도움이 될까요? –

답변

0

텍스트 출력보다 훨씬 쉽고 간단하게 빌드 폴더에있는 파일의 타임 스탬프를 볼 수 있습니다.

이 명령은 나에게 타임 스탬프으로 분류 빌드 파일의 좋은 목록을 제공, 그래서 약은 각에 소요되는 시간을 알 수 있습니다 :

ls -l -c -T -R .stack-work/dist/x86_64-osx/Cabal-1.22.5.0/build/<source folder> | grep "rw" | grep "\." | awk '{print $8,$10}' | sort