2014-01-21 4 views
2

현재 큰 fortran 90 코드 작업 중입니다. 대부분의 모듈에는 많은 수의 서브 루틴이 있습니다 (> 15). 모듈은 USE 다른 모듈은 스펙 부분에 있고 서브 루틴은 USE 다른 모듈은 그 위에 있습니다. 모든 모듈이를보고`USE`가 성능에 미치는 영향

MODULE OneModule 
USE GlobalConstant 
USE GlobalVariable 

CONTAINS 
    SUBROUTINE Subroutine1() 
    [...] 
    END SUBROUTINE Subroutine1 

    SUBROUTINE Subroutine2() 
    USE Mesh 
    [...] 
    END SUBROUTINE Subroutine2 

    [Other Subroutines] 
END MODULE OneModule 

그 선명도 또는 최적화를 위해 수행 된 경우, 궁금 : 여기 모습입니다. 모듈 OneModule에 많은 수의 서브 루틴이있는 경우, USE 모듈 MESH의 스펙 부분에 성능에 영향을 미치나요? 소수의 서브 루틴 만 필요하다면?

답변

7

일반적인 컴파일러 구현에서 주어진 USE의 위치가 실행 시간에 어떤 차이가 있다면 나는 기절 할 것입니다 (컴파일러 공급 업체에 버그 보고서 작성). 컴파일 시간에 중요한 차이를 만들 수 있습니다.

내부 또는 외부 범위의 위치 지정은 식별자 액세스 가능성을위한 프로그램 요구 사항과 교차하는 기본 프로그래밍 스타일에 대한 질문입니다.

F2003은 IEEE 부동 소수점 지원을위한 내장 (컴파일러가 제공하는) 모듈 집합을 소개했습니다. 이러한 모듈 중 일부가 존재하더라도 컴파일러가 코드를 변경할 수 있습니다 USE의 범위에있는 모든 것을 생성합니다.)

관련 문제