Обычно вызовы подпрограмм / функций в Fortran будут иметь очень мало накладных расходов. Хотя в языковом стандарте не определены механизмы передачи аргументов, типичная реализация «по ссылке», поэтому копирование не требуется, а только установка новой процедуры. На большинстве современных архитектур это мало накладных расходов. Выбор хороших алгоритмов, как правило, гораздо важнее, чем микрооптимизация.
Исключением в отношении быстрого вызова может быть случай, когда компилятор должен создавать временные массивы, например, если фактический аргумент является несмежным подразделом массива, а аргумент вызываемой процедуры является простым непрерывным массивом. Предположим, что фиктивный аргумент является размерностью (:). Вызов его с массивом измерения (:) очень прост. Если вы запрашиваете неединичный шаг в вызове, например, массив (1: 12: 3), то массив не является смежным, и компилятору может потребоваться создать временную копию. Предположим, что фактическим аргументом является измерение (:, :). Если вызов имеет массив (:, j), подмассив является смежным, поскольку в Фортране первый индекс изменяется быстрее всего в памяти и не должен нуждаться в копии. Но массив (i, :) не является смежным и может потребовать временную копию.
Некоторые компиляторы имеют опции, чтобы предупредить вас, когда нужны временные копии массивов, чтобы вы могли изменить свой код, если хотите.