Performance and optimization

Additional features and enhancements assist with performance tuning and application optimization.

Enhancements to -qpdf

The use of the -qpdf option consists of two steps. First, compile your program with -qpdf1 and run it with a typical set of data to generate the profiling data. Second, compile your program again with -qpdf2 to optimize the program based on the profiling data.

In previous releases, if you modified the source file and compiled with the -qpdf2 option, the compilation would stop with an error. As of IBM XL C/C++ for Linux, V11.1, you can use profiling data after you modify your source files. To do this, compile your application using the stale profiling data at the second stage of the PDF process.

Three new suboptions are added to the -qpdf option. These new suboptions allow more fine-grained control over performance improvements and extend -qpdf to support multiple pass profiling, cache miss profiling, block counter profiling, call counter profiling, and extended value profiling.

The three new -qpdf suboptions are:
level
Supports multiple-pass profiling, block counter profiling, call counter profiling, and extended value profiling. You can compile your application with -qpdf1=level=0|1|2 to generate profiling data with different levels of optimization.
Note: Both -qpdf1=level=0 and -qpdf1=level=1 support single-pass profiling, whereas -qpdf1=level=2 supports multiple-pass profiling.
exename
Generates the name of the PDF file you specify with the -o parameter.
defname
Reverts the PDF file to its default file name.

For detailed information about these suboptions, see -qpdf1, -qpdf2 in the XL C/C++ Compiler Reference.

Reports about compiler optimizations

There are a number of enhancements to the listing reports to give you more information on how the compiler optimized your code. You can use this information to get further benefits from the compiler's optimization capabilities. For more details about these enhanced reports, see New diagnostic reports.

Performance-related compiler options and directives

The entries in the following table describe new or changed compiler options and directives.

Information presented here is a brief overview. For detailed information about these and other performance-related compiler options, see Optimization and tuning options.

Table 1. Performance-related compiler options and directives
-qinline=level=number A new option is added to -qinline to provide guidance to the compiler about the relative value of inlining in relation to the default value of 5.number is a range of integer values between 0 and 10 that indicates the level of inlining you want to use. For details, see -qinline in the XL C/C++ Compiler Reference.
-qpdf -qpdf provides suboptions to give you more control flexibility in controlling different PDF optimizations. For more information, see the -qpdf1, -qpdf2 section in the XL C/C++ Compiler Reference.
-qprefetch A new enhancement is added to -qprefetch for inserting prefetch instructions automatically where there are opportunities to improve code performance: -qprefetch=assistthread. -qprefetch inserts prefetch instructions automatically where there are opportunities to improve code performance. For details, see -qprefetch in the XL C/C++ Compiler Reference.

For additional information about performance tuning and program optimization, see Optimizing your applications.