表达式优化

问题描述 投票:0回答:2

我有一个涉及

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)

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

optimization compiler-optimization intel-fortran
2个回答
1
投票

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

但是高性能 FORTRAN 编译器(可能不包括英特尔 FORTRAN)可能会做到这一点。


0
投票

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.