120 | 6.성능 : 프로그램 실행 속도 향상 |
[ 6. 7. 6 ] 루프 변환 및 소프트웨어 파이프라인
:: 루프 변환 및 소프트웨어 파이프라인 ::
/optimize : 5 옵션은 루프 변환 최적화라는 최적화 그룹과 소프트웨어 파이프라인 및 관련 소프트웨어 종속성 분석을 활성화합니다. 이것은 일부의 경우는 런타임 성능을 향상시키는 효과를 가지고 있습니다.
루프 변환 최적화는 루프에서 배열 인용에 적용된 여러 루프 중...
|
연필 | 2014.03.26 |
119 | 6.성능 : 프로그램 실행 속도 향상 |
[ 6. 7. 5. 2 ] 절차의 인라인
:: 절차의 인라인 :: 인라인은 부 프로그램 따옴표 (CALL 명령문이나 함수 호출)를, 서브 프로그램 모사되는 코드로 옮겨놓는 것을 의미합니다. 더 프로시져가 인라인되는 것으로, 일반적으로 전역적인 최적화의 효과가 향상됩니다.
최적화 작은 절차 인라인하고 다음과 같은 기준에 따라 인라인 후보를 제한합니다.
...
|
연필 | 2014.03.26 |
118 | 6.성능 : 프로그램 실행 속도 향상 |
[ 6. 7. 5. 1 ] 절차 사이의 분석
:: 절차 사이의 분석 ::
최적화 수준 / optimize : 4 이상으로 여러 소스 파일을 컴파일하면 컴파일러는 여러 프로그램 단위를 포함하여 더 코드 최적화 가능성을 확인할 수 있습니다. 따라서 다음과 같은 결과를 얻을 수 있습니다.
더 절차의 인라인 전개가 가능하게된다.
가득 차있는 전역 데이터 분석을한다.
링...
|
연필 | 2014.03.26 |
117 | 6.성능 : 프로그램 실행 속도 향상 |
[ 6. 7. 5 ] 자동 인라인
:: 자동 인라인 ::
자동 인라인을 수행 최적화를 사용하려면 / optimize : 4 (또는 / optimize : 5 )를 사용합니다. / optimize : 4를 사용하면 국소적인 최적화 ( / optimize : 1 ) 전역적인 최적화 ( / optimize : 2 ) 및 추가적인 전역적인 최적화 ( / optimize : 3 )을 활성화하고 됩니다.
더 낮은 최적화 레벨 (...
|
연필 | 2014.03.26 |
116 | 6.성능 : 프로그램 실행 속도 향상 |
[ 6. 7. 4. 2] 인터 레이스를 제거하는 코드 모사
:: 인터 레이스를 제거하는 코드 모사 ::
루프 전개와 기타 최적화뿐만 아니라, 코드 모사의 인터 레이스 제거하면 히에쓰 수가 줄어 듭니다. 코드 모사는 기본 블록 (엔트리 포인트가 위로를 제외하고는 출구가 끝에 밖에없는 일련의 명령의 흐름) 수를 줄이고 명령 스케줄링 기회를 늘립니다.
코드 모사는 일반적으...
|
연필 | 2014.03.26 |
115 | 6.성능 : 프로그램 실행 속도 향상 |
[ 6. 7. 4. 1 ] 루프 전개
:: 루프 전개 ::
최적화 수준 / optimize : 3 이상에서는 Visual Fortran 일부 가장 안쪽 루프를 전개하려고하고 히에쓰 수를 최소화하여 여러 명령을 하나 그룹화하여 중복 명령 효율적인 실행을 가능하게합니다 (명령 파이프라인). 루프 전개 후보로 가장 적합한 것은 제어 흐름이 제한되는 가장 안쪽 루프입니다.
배...
|
연필 | 2014.03.26 |
114 | 6.성능 : 프로그램 실행 속도 향상 |
[ 6. 7. 4 ] 추가적인 전역적인 최적화
:: 추가적인 전역적인 최적화 ::
추가적인 전역 최적화를 사용하려면 / optimize : 3 이상의 최적화 레벨을 사용합니다. / optimize : 3 이상을 사용하면 국소적인 최적화 ( / optimize : 1 )와 전역 최적화 ( / optimize : 2 )을 설정합니다.
추가적인 전역적인 최적화 컴파일 시간이 길어지고 아마도 코드의 크기가 ...
|
연필 | 2014.03.26 |
113 | 6.성능 : 프로그램 실행 속도 향상 |
[ 6. 7. 3 ] 전역적인 최적화
:: 전역적인 최적화 ::
전역 최적화를 사용하려면 / optimize : 2 또는 그 이상의 최적화 레벨을 사용합니다. / optimize : 2 이상을 사용하면 국소적인 최적화 ( / optimize : 1 )을 설정합니다.
전역적인 최적화에는 다음이 포함됩니다.
데이터 흐름 분석
분할 수명 분석
힘의 축소 (CPU 집약적인 계산을 더 ...
|
연필 | 2014.03.26 |
112 | 6.성능 : 프로그램 실행 속도 향상 |
[ 6. 7. 2. 7 ] 실수, 복소수 연산의 혼합
:: 실수, 복소수 연산의 혼합 ::
REAL 연산 COMPLEX 연산이 혼합되어있는 경우 Visual Fortran은 다음의 경우에는 변환을 피하고, 단순화된 연산을 수행합니다.
두 가지 연산 대상이 REAL 인 경우 더하기 (+), 빼기 (-) 및 곱하기 (*)
제수가 REAL 경우의 나누기 (/)
예를 들어, 변수 R이 REAL에서 A와 B COMPLEX이...
|
연필 | 2014.03.26 |
111 | 6.성능 : 프로그램 실행 속도 향상 |
[ 6. 7. 2. 6 ] 레지스터 사용
:: 레지스터 사용 ::
일반적으로 큰 프로그램은 레지스터에 저장하면 성능을 향상시키기 위해 데이터가 데이터를 저장할 수있는 레지스터 수보다 많이 포함되어 있습니다. 이 경우 Visual Fortran은 일반적으로 다음과 같은 우선 순위에 따라 레지스터를 사용하려고 시도합니다.
배열 인덱스가있는 임시 연산 결과
변...
|
연필 | 2014.03.26 |
110 | 6.성능 : 프로그램 실행 속도 향상 |
[ 6. 7. 2. 5 ] 불필요한 저장 삭제
:: 불필요한 저장 삭제 ::
변수에 할당이 이루어졌지만 변수가 한번도 사용하지 않으면 Visual Fortran은 대입 문 전체를 제거합니다.
X = Y * Z
.
.
.! 이전에 X를 사용하지 않으면, X = Y * Z는 삭제됩니다.
X = A (I, J) * PI
성능 분석에 사용되는 프로그램은 이러한 불필요한 연산이 포함된 경우가 많습니다. ...
|
연필 | 2014.03.26 |
109 | 6.성능 : 프로그램 실행 속도 향상 |
[ 6. 7. 2. 4 ] 값 전달
:: 값 전달 ::
Visual Fortran은 변수와 상수에 할당되는 값 (DATA 문장을 포함)을 그들이 사용되는 모든 장소에서 추적합니다. Visual Fortran은 효율이 좋아진다면 그 위치에서 값 자체를 사용합니다.
부 프로그램을 컴파 일할 때, Visual Fortran 프로그램을 분석하여 서브루틴이 두 번 이상 호출되면 전파를 안전...
|
연필 | 2014.03.26 |
108 | 6.성능 : 프로그램 실행 속도 향상 |
[ 6. 7. 2. 3 ] 컴파일시 연산
:: 컴파일시 연산 ::
Visual Fortran은 런타임에 모든 연산을 수행하지 않고 최대한 많은 연산을 컴파일 타임에 합니다.
정수 연산
Visual Fortran은 (PARAMETER 상수를 포함) 상수에 대해 다양한 작업을 수행할 수 있습니다.
단항 마이너스가 앞에 놓여있는 상수는 음수 값을 계산합니다.
+,?, * 또는 / 연산...
|
연필 | 2014.03.26 |
107 | 6.성능 : 프로그램 실행 속도 향상 |
[ 6. 7. 2. 2 ] 정수의 곱하기와 나누기의 전개
:: 정수의 곱하기와 나누기의 전개 ::
곱하기와 나누기의 전개는 빠르게 곱하기와 나누기를 할 수있는 동일한 결과를 생성하는 비트 자릿수 이동로 변환하는 것입니다. 예를 들어, 정수 식 (I * 17), I 4 비트만 자릿수 이동 후 I의 원래 값을 더한 값으로 계산할 수 있습니다. 이것은 Compaq 포트란 ISHFT 내장 함수를 ...
|
연필 | 2014.03.26 |
106 | 6.성능 : 프로그램 실행 속도 향상 |
[ 6. 7. 2. 1 ] 공통 부분 식의 삭제
:: 공통 부분 식의 삭제 ::
복수의 연산 같은 부분식이 나타났으며, 그 값이 동일한 경우, Visual Fortran은 한 번만 계산 부분 식을 결과로 바꿉니다.
DIMENSION A (25,25), B (25,25)
A (I, J) = B (I, J)
최적화없이는이 구문은 다음과 같이 코딩할 수 있습니다.
t1 = ((J-1) * 25 + (I-1)) * 4
t2 = ((J-1) * 2...
|
연필 | 2014.03.26 |
105 | 6.성능 : 프로그램 실행 속도 향상 |
[ 6. 7. 2 ] 국소적인 (최소한의) 최적화
:: 국소적인 (최소한의) 최적화 ::
국소적인 최적화를 사용하려면 / optimize : 1 또는 그 이상의 최적화 레벨 / optimize : 2 / optimize : 3 / optimize : 4 또는 / optimize : 5 를 사용합니다.
국소적인 최적화를 비활성화하려면 / optimize : 0 옵션을 지정합니다.
다음 절에서는 국소적인 최적화에 대해 설명...
|
연필 | 2014.03.14 |
104 | 6.성능 : 프로그램 실행 속도 향상 |
[ 6. 7. 1 ] 모든 최적화 수준에서 수행되는 최적화
:: 모든 최적화 수준에서 수행되는 최적화 ::
다음 최적화는 모든 최적화 수준 ( / optimize : 0 / optimize : 5)에서 이루어집니다.
공간의 최적화 공간의 최적화, 불필요하게 사용되고있는 메모리를 제거하여 개체 또는 실행 파일의 크기를 줄이고 속도와 시스템 처리량을 향상시킵니다. Visual Fortran 공간의 최적...
|
연필 | 2014.03.14 |
103 | 6.성능 : 프로그램 실행 속도 향상 |
[ 6. 7 ] 최적화 수준 : /optimize 옵션
:: 최적화 수준 : /optimize 옵션 ::
Visual Fortran은 기본에 다양한 최적화를 수행합니다. 이러한 최적화는 프로그램의 코드를 변경하지 않고도 이용할 수 있습니다. 하지만 최적화가 어떻게 작동하는지 이해 해두면, 그 동작을 방해하는 요소를 프로그래밍 방식으로 제거하는 것이 있습니다.
컴파일 시에 ...
|
연필 | 2014.03.14 |
102 | 6.성능 : 프로그램 실행 속도 향상 |
[ 6. 6. 7 ] DO 루프의 효율성을 고려하여 코딩
:: DO 루프의 효율성을 고려하여 코딩 ::
가능한 DO 루프에서, 산술 연산이나 기타 연산을 최소화합니다. 불필요한 연산을 루프 밖으로 이동하여 성능을 향상시킬 수 있습니다 (예 : 루프에서 변화하지 않는 중간적인 값이 필요하지 않은 경우).
관련 정보
루프 최적화에 대해서는 " 루프 변환 "," 루프 전개 제어 ...
|
연필 | 2014.03.14 |
101 | 6.성능 : 프로그램 실행 속도 향상 |
[ 6. 6. 6] 문 함수와 내부 보조 프로그램을 사용
:: 문 함수와 내부 보조 프로그램을 사용 ::
Visual Fortran 컴파일러는 컴파일시 사용되는 보조 프로그램 정의를 참조있는 경우, 그 서브 프로그램을 인라인 수 있습니다. 문 함수와 내부 보조 프로그램을 사용하면 특히 여러 소스 파일을 최적화 레벨 / optimize : 4 또는 / optimize : 5 로 정리해 컴파일 때 (또는 적...
|
연필 | 2014.03.14 |