Because of the production nature of CICS, emphasis is placed on performance. Many design choices can affect performance. These include:
REXX uses sophisticated techniques, such as look-aside tables and tree balancing, for good performance. Although REXX execs are interpreted, most of the actual processing for the typical application is spent executing the REXX commands that do most of the actual work. These commands can be (and usually are) written in Assembler, or a compiled language, when performance is an important consideration.
Client/server support is a REXX feature that provides a substantial performance advantage. With this facility, a server REXX exec can often be used instead of a nested REXX exec to provide application function. The performance characteristics of such a server can be better managed. The advantage of a server exec over a nested exec is that a server exec can be started and can process multiple client requests before ending. This has a shorter path-length, provides better response time, and often uses less system resource.
An EXEC CICS SUSPEND is automatically issued after every 1024 clauses executed in an exec to help prevent a REXX/CICS exec from monopolizing processor resources.
Usually, for the majority of small- to medium-scale CICS applications, the productivity benefits of using REXX far outweighs the performance penalty.
REXX/CICS execs may reside in either VSAM-based REXX File System files or in VSE Librarian sublibraries.