HLASM General Information
Previous topic | Next topic | Contents | Contact z/OS | Library | PDF


Factors improving performance

HLASM General Information
GC26-4943-06

This chapter describes some of the methods used by High Level Assembler that improve assembler execution performance relative to earlier assemblers. These improvements are gauged on the performance of typical assemblies, and there might be cases where the particular circumstances of your application or system configuration do not achieve them. The main factors that improve the performance of High Level Assembler are:
  • Logical text stream and tables that are a result of the internal assembly process remain resident in virtual storage, whenever possible, throughout the assembly.
  • High Level Assembler can be installed in shared virtual storage.
  • High Level Assembler exploits 31-bit addressing.
  • High Level Assembler runs entirely in storage: the utility files, SYSUT1 or IJSYS03, are no longer used.
  • Two or more assemblies can be done with one invocation of the assembler.
  • High Level Assembler edits only the macro definitions that it encounters during a given macro generation or during conditional assembly of open code, as controlled by AIF and AGO statements.
  • Source text assembly passes are consolidated. The edit and generation of macro statements are done on a demand basis in one pass of the source text.

Resident tables and source text: Keeping intermediate text, macro definition text, dictionaries, and symbol tables in main storage whenever possible improves performance. High Level Assembler writes working storage blocks to the assembler work data set only if necessary, and then only if the WORKFILE option is specified. Less input and output reduces system overhead and frees channels and input/output devices for other uses.

The amount of working storage allocated to High Level Assembler is determined by the SIZE assembler option, and is limited only by the amount available in the address space.

Shared virtual storage: High Level Assembler is a reentrant program that can be installed in shared virtual storage, such as the z/OS Link Pack Area (LPA), a CMS logical saved segment or in a VSE Shared Virtual Area (SVA). When High Level Assembler is installed in shared virtual storage, the demand for system resources associated with loading the assembler load modules is reduced. In a multi-user environment, multiple users are able to share one copy of the assembler load modules.

31-bit addressing: High Level Assembler takes advantage of the extended address space, available in extended architecture operating systems, by allowing most of its data areas to reside above the 16-megabyte line. I/O areas and exit parameter lists remain in storage below the 16-megabyte line to satisfy access method requirements and user exits using 24-bit addressing mode. The High Level Assembler's modules can be loaded above the 16-megabyte line, except for some initialization routines. 31-bit addressing increases the assembler's available work area, which allows larger programs than previously possible to be assembled in-storage. In-storage assemblies reduce the input and output system overhead and free channels and input/output devices for other uses.

Multiple assembly: You can run multiple assemblies, known as batching, with one invocation of the assembler. Source records are placed together, with no intervening ‘/*’ JCL statement.

Batch assembly improves performance by eliminating job and step overhead for each assembly. It is especially useful for processing related assemblies such as a main program and its subroutines.

Macro-editing process: High Level Assembler edits only those macro definitions encountered during a given macro generation or during conditional assembly or open code, as controlled by AIF and AGO statements.

A good example of potential savings by this feature is the process of system generation. During system generation, High Level Assembler edits only the set of library macro definitions that are expanded; as a result, High Level Assembler may edit fewer library macro definitions than previous assemblers.

Unlike DOS/VSE Assembler, High Level Assembler requires that library macros be stored in source format. This removes the necessity to edit library macros before they can be stored in the library.

Consolidating source text passes: Consolidating assembly source text passes and other new organization procedures reduce the number of internal processor instructions used to handle source text in High Level Assembler, which causes proportionate savings in processor time. The saving is independent of the size or speed of the system processor involved; it is a measure of the relative efficiency of the processor.

Go to the previous page Go to the next page




Copyright IBM Corporation 1990, 2014