나는 약 유용성을 요청합니다. 이것은 컴파일 된 실행 파일/라이브러리의 크기에 미치는 영향에 관한 것입니다. 코드 유지 보수성이나 가독성과 관련이 없습니다.명시 적 가져 오기는 컴파일 된 파일 크기를 줄일 수 있습니까?
특정 모듈을 가져 오기
것이 유용 대신 (자체 서브 모듈 수입)의 주요 모듈을 가져 오는 패키지에서 유일하게 사용되는 모듈을 가져 오는 것입니다.
import Foreign.Storable
대신 : (만 가져 오기 목록을 포함)을 Foreign
모듈 예를 들어
,
import Foreign
명시 적으로 가져 오는 기능/유형
은에 유용인가 전체 모듈을 가져 오는 대신 사용 된 함수/유형을 가져 오시겠습니까? 예를 들어
:
import Foreign.ForeignPtr (ForeignPtr, mallocForeignPtr, withForeignPtr)
대신 :
import Foreign.ForeignPtr
당신이 차이를받을 경우 두 가지 방법으로 간단한 응용 프로그램을 컴파일하고 보는 시도? 최적화하지 않고 컴파일하고 최적화를 통해 같은 크기로 컴파일하면 더 큰 파일을 얻을 것이라는 것이 나의 의구심입니다. 그러나 LTO가 필요할 수도 있습니다. 함수를 명시 적으로 모듈 대 한 번에 가져 오는 것의 차이점을 얻지 못할 것이라고 생각합니다. –
이것은 하스켈 코드의 특징이 아닙니다. 그것은 연결의 특징입니다.첫째, 동적으로 링크하는 경우이 중 아무 것도 차이를 만들지 않으므로 정적 링크에 대해 이야기한다고 가정합니다. 첫 번째 경우에는 ['split-objs'] (https://downloads.haskell.org/~ghc/latest/docs/html/users_guide/phases.html#ghc-flag--split)에만 영향을 미칩니다. -objs)가 사용 가능합니다. 그렇지 않으면 전체 라이브러리가 링크됩니다. 두 번째 경우에는 아무런 변화가 없습니다. 모듈에서 이름 (!)을 가져 오지 않으면 전체 모듈 (또는 'split-objs'가 활성화되지 않은 전체 패키지)에서 링크가 필요합니다. – user2407038
@ user2407038 답변 해 주셔서 감사합니다. 그것을 진짜 응답으로 만들어라. 나는 그것을 검증 할 것이다. –