与性能相关的编译器选项

在下表中,您可以看到每个选项的用途描述,其性能优点和缺点以及适用的用法说明。

表 1. 与性能相关的编译器选项
编译器选项 用途 性能优势 性能劣势 用法说明
ARITH(EXTEND)ARITH(FULL)

(见 ARITH

增加十进制数允许的最大位数 由于中间结果较大, ARITH(EXTEND)ARITH(FULL) 会导致所有十进制数据类型的性能下降。 您迂到的降级量直接取决于您使用的十进制数据量。
DYNAM

(参见 “动态”

在运行时动态装入子程序 (通过 CALL 语句调用) 子程序更易于维护,因为如果更改了子程序,那么不必再次对应用程序进行链接编辑。 存在轻微的性能损失,因为调用必须经过 library 例程。 要释放不再需要的虚拟存储器,请发出 CANCEL 语句。
OPTIMIZE(STD)

(见优化

优化生成的代码以提高性能 通常会生成更高效的运行时代码 更长的编译时间: OPTIMIZE 需要比 NOOPTIMIZE更多的编译处理时间。 当需要频繁编译时,通常在程序开发期间使用 NOOPTIMIZE ; 它还允许进行符号调试。 对于生产运行,建议使用 OPTIMIZE
OPTIMIZE(FULL) 优化生成的代码以提高性能,同时优化 DATA DIVISION 通常会导致更高效的运行时代码和更少的存储使用量 更长的编译时间: OPTIMIZE 需要比 NOOPTIMIZE 更多的编译处理时间。 OPT(FULL) 将删除未使用的数据项,对于仅用作转储读取标记的时间戳记或数据项,这可能是不需要的。
SSRANGE

(见 SSRANGE

验证所有表引用和引用修改表达式是否都在正确的界限内 SSRANGE 生成用于验证表引用的其他代码。 使用 NOSSRANGE 会导致不生成该代码。 在指定了 SSRANGE 的情况下,检查有效范围会影响编译器性能。 通常,如果您只需要验证表引用几次而不是每次引用,那么对您自己的检查进行编码可能比使用 SSRANGE更快。 您可以使用 CHECK(OFF) 运行时选项在运行时关闭 SSRANGE对于性能敏感的应用程序,建议使用 NOSSRANGE
NOTEST

(见测试

要避免使用调试器所需的其他对象代码。 TEST 显着扩大了对象文件,因为它添加了调试信息。 链接程序时,可以指示链接程序排除调试信息,从而生成与使用 NOTEST编译模块时创建的大小大致相同的可执行文件。 如果包含调试信息,那么可能会出现轻微的性能降级,因为较大的可执行文件需要更长时间才能装入,并且可能会增加页面调度。 对于生产运行,建议使用 NOTEST
TRUNC(OPT)

(见 TRUNC

为避免生成代码以截断算术运算的接收字段 不生成额外代码,通常会提高性能 每当更改 BINARY 数据项时, TRUNC(BIN)TRUNC(STD) 都会生成额外代码。 TRUNC(BIN) 通常是这些选项中最慢的。 TRUNC(STD) 符合 85 COBOL 标准 ,但 TRUNC(BIN)TRUNC(OPT) 不符合标准。 对于 TRUNC(OPT),编译器假定数据符合 PICTUREUSAGE 规范。 建议尽可能使用 TRUNC(OPT)

相关概念
优化