#pragma execution_frequency

适用的调用

表 1. 接受给定编译指示的调用
编译指示 (pragma) xlc (编译 C) xlC (编译 C++) xlclang(编译 C) xlclang++(编译 C++)
#pragma execution_frequency
注: 此表中仅列出典型调用。 对于所有基本调用及其等效特殊调用,您可以参阅 编译器调用的完整列表

类别

优化和调整

用途

标记您期望执行频率非常高或非常低的程序源代码。

启用优化时,编译指示将用作对优化器的提示。

语法

读取语法图跳过可视语法图 # pragma execution_frequency ( very_lowvery_high )

参数

Very_low
标记您期望很少执行的源代码。
Very_high
标记您期望非常频繁地执行的源代码。

使用量

将此编译指示与优化选项结合使用; 如果未启用优化,那么编译指示不起作用。

编译指示必须放在块作用域内,并作用于最接近的 前置 分支点。

示例

在以下示例中,编译指示在 if 语句块中用于标记不经常执行的代码。
int *array = (int *) malloc(10000);

if (array == NULL) {
    /* Block A */
    #pragma execution_frequency(very_low)
    error();
}
在下一个示例中,代码块 Block B 被标记为不经常执行,并且在分支期间可能会选择 Block C
if (Foo > 0) {
    #pragma execution_frequency(very_low)
    /* Block B */
    doSomething();
} else {
    /* Block C */
    doAnotherThing();
}
在此示例中,编译指示在 switch 语句块中用于标记频繁执行的代码。
while (counter > 0) {
    #pragma execution_frequency(very_high)    	
    doSomething();
}	/* This loop is very likely to be executed.    */

switch (a) {
    case 1:
        doOneThing();
        break;
    case 2:
        #pragma execution_frequency(very_high)	
        doTwoThings();	
        break;
    default:
        doNothing();
}    /* The second case is frequently chosen.   */