Является ли Fortran в источнике с фиксированной формой проще для компилятора для оптимизации?

Для меня работал следующий код. Этот код будет печатать дату в формате DD-MM-YYYY.

DateValue=DateValue.substring(6,8)+"-"+DateValue.substring(4,6)+"-"+DateValue.substring(0,4);

else, вы также можете использовать:

DateValue=DateValue.substring(0,4)+"-"+DateValue.substring(4,6)+"-"+DateValue.substring(6,8);
1
задан francescalus 13 July 2018 в 15:34
поделиться

1 ответ

Вопрос имеет некоторые тонкие аспекты, но простой ответ «нет» (для компилятора, который понимает обе формы).

Компиляторы обычно работают в нескольких фазах. Когда дело доходит до оптимизации, компилятор не смотрит на строку источника и не определяет, что с ней делать.

Ранняя фаза компиляции - это лексическая фаза. Это берет исходный код и определяет, какие токены существуют. Рассмотрим источники

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

, а токены снова совпадают. Теперь могут быть различия в том, как компилятор рассматривает два подхода, но исходная форма не является ключом.

2
ответ дан francescalus 17 August 2018 в 12:36
поделиться
  • 1
    В самом деле, большая часть работы компилятора не связана с тем, что language был написан исходный код, не говоря уже о стиле написания. – francescalus 13 July 2018 в 16:06
Другие вопросы по тегам:

Похожие вопросы: