固定格式源中的Fortran是否易于编译器优化?

时间:2018-07-13 14:36:36

标签: optimization fortran

根据我在Internet上发现的内容,固定格式的Fortran是人们在科学计算中偶尔仍需要处理的问题。我听说过它主要是在维护旧程序的情况下进行的,而以易于维护的形式进行重写将非常昂贵。

但是,从头开始编写Fortran程序时,相比自由格式,使用限制性更强的固定格式有什么好处吗?

更具体地说,“优势”是指固定形式的程序比自由形式的等效程序更有效的计算。

1 个答案:

答案 0 :(得分:2)

这个问题有一些微妙的方面,但简单的答案是“否”(对于理解这两种形式的编译器)。

编译器通常以多个阶段运行。在进行优化时,编译器不会查看源代码并确定如何处理。

编译的早期阶段是 lexical 阶段。这将获取源代码并确定存在哪些令牌。考虑来源

do 77 i=1, 5
  x(i) = 1.0
77 continue

为自由格式,

      do77i=1,5
      x(i)=1.0
      77continue

为固定格式,

      do 77 i=1,5
        x(i) = 1.0
      77 continue

两者均有效。

在词法阶段之后,编译器具有的内部表示形式是相同的(至少确定了完全相同的标记集)。接下来发生的事情与预先确定的来源无关。

一个并发症是人们经常认为自由形式是指

x(1:5) = 1.0

因为这是Fortran 90+编写相同作业的方法。

这同样可以固定格式写

      x(1:5) = 1.0

和令牌再次相同。现在,编译器对待这两种方法的方式可能有所不同,但是源代码形式不是关键。