Ответ 1
Вы работаете с компилятором для генерации хорошего кода, и чем больше информации вы предоставляете компилятору, тем лучше работа, которую вы можете сделать вместе.
Подписывает ли он intent(in)
любые фиктивные аргументы, которые вы не изменяете, или используя parameter
для констант или явно создавая pure
любую подпрограмму, которая не имеет побочных эффектов, или используя forall
, когда вам не очень-то нравится порядок, в котором рассчитывается цикл, более подробно о том, что вы хотите, вы выиграете, потому что:
- теперь компилятор может отмечать больше ошибок во время компиляции - эй, вы изменили этот аргумент, который, как вы сказали, были намерены "в", или вы изменили эту переменную модуля в чистой подпрограмме
- ваш код станет более понятным для следующего человека, чтобы прийти к нему, не зная, что он должен делать (и этот человек может быть вам три месяца спустя).
- компилятор может быть более агрессивным с оптимизацией (если у компилятора есть гарантия от вас, что ничто не изменится, оно может перевернуть оптимизацию).
Из этих трех преимуществ оптимизация, вероятно, не самая важная; в случае чистых подпрограмм интеллектуальный компилятор, вероятно, может увидеть только через статический анализ, что ваша подпрограмма не имеет побочных эффектов. Тем не менее, чем больше гарантий вы можете дать, тем лучше работа, которую он может сделать для оптимизации вашего кода при сохранении правильности.