#pragma execution_frequency
适用的调用
| 编译指示 (pragma) | xlc (编译 C) | xlC (编译 C++) | xlclang(编译 C) | xlclang++(编译 C++) |
|---|---|---|---|---|
#pragma execution_frequency |
✓ | ✓ | ✓ | ✓ |
注: 此表中仅列出典型调用。 对于所有基本调用及其等效特殊调用,您可以参阅 编译器调用的完整列表 。
类别
用途
标记您期望执行频率非常高或非常低的程序源代码。
启用优化时,编译指示将用作对优化器的提示。
语法
参数
- 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. */
