打印
[开发工具]

提取公共表达式快捷运算

[复制链接]
45|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
jf101|  楼主 | 2024-1-29 22:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式


在某些情况下,C编译器不能从浮点表达式中提出公共的子表达式,因为这意味着相当于对表达式重新排序。

然而编译器在提取公共子表达式前不能按照代数的等价关系重新安排表达式。这时,程序员需要手动地提出公共的子表达式。

不好的代码:

float a, b, c, d, e, f;
...
e = b * c / d;
f = b / d * a;

推荐的代码:

float a, b, c, d, e, f;
...
const float t = (b / d);
e = c * t;
f = a * t;



另一个例子,不好的代码:

float a, b, c, e, f;
...
e = a / c;
f = b / c;

推荐的代码:

float a, b, c, e, f;
。。。
const float t = (1.0f / c);
e = a * t;
f = b * t;



使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

184

主题

1220

帖子

2

粉丝