컴파일하는데 약 30 초가 걸리는 TH- 무거운 파일이 있습니다. Template Haskell의 성능을 디버깅하는 데 사용할 수있는 몇 가지 기술은 무엇입니까?하스켈 프로파일 링 템플릿
16
A
답변
2
TH의 컴파일 흐름을 올바르게 이해했다면, 컴파일 할 때 일반 haskell 함수가 실행 중입니다. 그러나 당신은 당연히 런타임에서 스스로 실행할 수 있습니다.
예를 들어, TH- 중량 파일에는 $ (foo x y ...)와 같은 것이 있습니다. 다른 파일을 만들고 'foo x y'를 호출하지만 결과를 연결하지 않습니다. 그러면 평소와 같이 'foo'를 프로파일 링 할 수 있습니다. 병목 현상이 AST 생성 단계에있는 경우 찾아냅니다. 게으른 것을 잊지 마세요.
0
GHC 8부터는 -fexternal-interpreter을 사용할 수 있습니다.
프로파일 링을 사용하여 TH 기능을 정의하는 라이브러리를 컴파일 한 다음 GHC 옵션 -fexternal-interpreter -opti+RTS -opti-p
이있는 스플 라이스에서 TH 기능을 사용하는 코드 *를 컴파일하십시오. 그러면 ghc-iserv-prof.prof
이라는 파일이 생성됩니다.
이 접근 방식은 Q
모나드의 모든 기능을 사용할 수 있다는 이점이 있습니다.
* TH 라이브러리 (다른 hs-source-dir에 있음)와 동일한 cabal 프로젝트의 벤치 마크 제품군도 작동합니다. 동일한 라이브러리에서 정의되고 사용되는 TH 함수로도 작동 할 수 있습니다. 그런 다음 해석 된 코드를 프로파일 링 할 것입니다.
관련 문제
- 1. 프로파일 링 표현식 템플릿
- 2. 하스켈 프로파일 링 동안 오버 헤드 제외
- 3. 하스켈 코드를 프로파일 링하지만 라이브러리 프로파일 링 정보는 제외합니다.
- 4. Java 프로파일 링, 성능 튜닝 및 메모리 프로파일 링
- 5. 소프트웨어 프로파일 링 도구
- 6. 메모리 프로파일 링 도구
- 7. 서블릿 프로파일 링
- 8. 메모리 프로파일 링
- 9. 크롬 애플리케이션 프로파일 링
- 10. Zabbix Solr 프로파일 링
- 11. 벤치마킹/프로파일 링 JavaScript
- 12. JNI 애플리케이션 프로파일 링
- 13. 스택으로 프로파일 링
- 14. PyCharm으로 Django 프로파일 링
- 15. 분산 시스템 프로파일 링
- 16. Clojure 프로파일 링 도구?
- 17. JVM을 원격으로 프로파일 링
- 18. 파이썬 함수 프로파일 링
- 19. iPhone 쉐이더 프로파일 링
- 20. 장고 프로파일 링
- 21. 불안정 프로파일 링 타이밍
- 22. 프로파일 링 지침
- 23. 레일에서의 프로파일 링
- 24. .net 라이브러리 프로파일 링
- 25. NetBeans에서 프로파일 링
- 26. 힙 프로파일 링 도구
- 27. 메모리 액세스 프로파일 링
- 28. 프로파일 링 전력 쿼리
- 29. 프로파일 링 파이썬 스크립트
- 30. 노트북 프로파일 링 - IPython
실제로 파일을 보면 TH가 즉시 실행되고 GHC가 인스턴스를 확인하는 데 항상 시간이 소비된다는 사실을 발견했습니다. 그래도이 질문에 관심이 있습니다. –
어쩌면 당신은 [Quasi] (http://hackage.haskell.org/packages/archive/template-haskell/2.8.0.0/doc/html/Language-Haskell-TH-Syntax.html#t:Quasi)를 만들 수 있습니다. 런타임시 IO에서 실행되는 일부 모나드의 경우, 표준 프로파일 링 도구를 사용할 수 있습니다. 모나드는 reified Info 및 Locations (TH로 생성 될 수 있음) 목록을 가질 수 있으므로 reify를 계속 사용할 수 있습니다. – bennofs