表达式优化

时间:2012-08-20 22:52:16

标签: optimization compiler-construction compiler-optimization

我有一个涉及REAL的表达式:

xf=w1*x1 + w2*x2 + w3*x3 + w1*y1 + w2*y2 + w3*y3

我想知道(英特尔Fortran)编译器是否将其优化为:

xf=w1*(x1+y1) + w2*(x2+y2) + w3*(x3+y3)

如何查看为此表达式生成的表达式树?

2 个答案:

答案 0 :(得分:1)

您的标准公共子表达式方案不会执行上述转换,有些语言会认为转换是非法的,因为它可能会导致不同的副作用。

但高性能FORTRAN编译器(可能不包括Intel FORTRAN)可能会这样做。

答案 1 :(得分:0)

  

如何查看为此表达式生成的表达式树?

如果您的编译器具有在给定优化阶段后显示树的选项,则可以使用该选项。要了解是否是这种情况,请参考编译器的优化。

如果您的编译器没有这样的选项,您将无法看到编译器在运行期间生成的树(或其他内部表示)。在这种情况下,最好的办法是简单地查看生成的程序集,看看将执行哪些算术运算。