优化表达式和程序逻辑
请考虑以下准则:
- 如果表达式的组件在其他表达式中使用,并且它们包含函数调用或者在使用之间存在函数调用,请将重复的值分配给局部变量。
- 避免强制编译器在整数和浮点内部表示之间转换数字。 例如:
float array[10]; float x = 1.0; int i; for (i = 0; i< 9; i++) { /* No conversions needed */ array[i] = array[i]*x; x = x + 1.0; } for (i = 0; i< 9; i++) { /* Multiple conversions needed */ array[i] = array[i]*i; }如果必须使用混合方式算术,请尽可能在单独的计算中对整数和浮点算术进行编码。
- 请勿将全局变量用作循环索引或边界。
- 避免
goto语句跳入循环的中间。 此类语句禁止某些优化。 - 通过使掉线路径更有可能,提高代码的可预测性。 代码,例如:
应写为:if (error) {handle error} else {real code}if (!error) {real code} else {error} - 如果
switch语句的一个或两个案例的执行频率通常比其他案例高得多,请通过在switch语句之前单独处理这些案例来对这些案例进行分解。 如果可能,请通过检查值是否在要从数组获取的范围内来替换switch语句。
仅在必要时使用 块进行异常处理,因为它们可能会抑制优化。 try- 使数组下标表达式尽可能简单。