home *** CD-ROM | disk | FTP | other *** search
- Newsgroups: comp.os.vms
- Path: sparky!uunet!zaphod.mps.ohio-state.edu!darwin.sura.net!haven.umd.edu!decuac!pa.dec.com!e2big.mko.dec.com!quark.enet.dec.com!lionel
- From: lionel@quark.enet.dec.com (Steve Lionel)
- Subject: RE: ballooning EXE size
- Message-ID: <1992Dec30.142249.21319@e2big.mko.dec.com>
- Lines: 37
- Sender: usenet@e2big.mko.dec.com (Mr. USENET)
- Reply-To: lionel@quark.enet.dec.com (Steve Lionel)
- Organization: Digital Equipment Corporation, Nashua NH
- References: <9212291417.AA07008@uu3.psi.com>
- Date: Wed, 30 Dec 1992 14:22:49 GMT
-
-
- A number of people have replied to Loren Buhle's question about "Balooning
- EXE size" with the suggestion to increase the linker's cutoff point for
- creating new demand-zero image sections using the ISD_MAX linker option
- statement. Though that "fix" often will shrink the image size, it has a hidden
- cost; the reason for the limit in the first place.
-
- As the number of image sections grows, the image activation time also grows;
- an image with 100 or more image sections can take a long time to activate.
- Sometimes this isn't a problem, but sometimes it is. The ideal solution, which
- I described in my previous posting, is to reduce the number of image sections to
- the absolute minimum by using the linker COLLECT option statement. If possible,
- get it down such that there are no two image sections of the same type
- (read-only, demand-zero, copy-on-ref, etc.). I would only recommend adjusting
- ISD_MAX if you haven't succeeded using the COLLECT method.
-
- Some additional tips - use COMMON instead of large local variables; even a
- COMMON which is only used by one routine. Each COMMON has its own PSECT name
- and thus you can use COLLECT to put all the uninitialized COMMONs together.
- Reserve local variables for non-arrays and initialized storage. Even better,
- put all your data-initialized storage into their own set of COMMONs and
- COLLECT them into their own image section. The VAX FORTRAN and VAX FORTRAN-HPO
- Release Notes contain additional details on how to use COLLECT in a linker
- options file.
-
- At present, there is a limit of 250 named COMMONs in VAX FORTRAN, and no way
- to allocate arrays on the stack (which would be ideal for large local arrays).
- In DEC Fortran for OpenVMS VAX V6.0, which we expect to be shipping by March,
- this limit is raised to 508, plus you can allocate arrays on the stack by
- using the AUTOMATIC statement.
- --
-
- Steve Lionel lionel@quark.enet.dec.com
- SDT Languages Group
- Digital Equipment Corporation
- 110 Spit Brook Road
- Nashua, NH 03062
-