PRB: Large BLOCK DATA Subprogram Compiles Slowly (106731)
The information in this article applies to:
- Microsoft FORTRAN PowerStation for MS-DOS 1.0
- Microsoft FORTRAN PowerStation for MS-DOS 1.0a
- Microsoft Fortran Powerstation 32 for Windows NT 1.0
- Microsoft Fortran Powerstation 32 for Windows NT 4.0
This article was previously published under Q106731 SYMPTOMS
Compilation of a large BLOCK DATA subprogram can take a very long time
using the FORTRAN PowerStation. In tests, a BLOCK DATA subprogram with
32,000 DATA statements took approximately 45 minutes to compile on a
50 megahertz (MHz) 486 machine.
CAUSE
This slow compilation is caused by initializing a large array in a
BLOCK DATA subprogram with several DATA statements. One DATA statement
for each array element produces the slowest compile. The array
elements must also be initialized in the order that they appear in the
array for the slow compilation to occur.
FORTRAN PowerStation uses the COFF object file format. Because COFF
requires that every element of an array be enumerated exactly once,
all the data records (which are generated for each DATA statement in
the BLOCK DATA) are sorted. The sorting algorithm is least efficient when
the records are already sorted and most efficient when they are in reverse
order.
RESOLUTION
If array elements are initialized in the reverse order that they
appear in the array, compilation time will be significantly reduced
(for example, reduced from 45 minutes to 3 minutes). Reducing the
number of DATA statements by initializing thousands of array elements
in a single DATA statement also reduces compile time.
Modification Type: | Major | Last Reviewed: | 12/1/2003 |
---|
Keywords: | kbLangFortran KB106731 |
---|
|