Рассмотрев процедуры и макросы мы подошли к понятию оптимизации. Чем же различается использование макросов и процедур. Во-первых, процедуру нужно вызвать. Делает это команда CALL.
В результате у нас экономится место в программе, так как код процедур будет всего в одном месте, а из разных мест мы его будем использовать.
Это хорошо, но только при вызове процедуры происходит помещение параметров в стек, помещения в стек адреса возврата и возвращение из процедуры, на все это тратится время. Соответственно программа, которая содержит множество процедур будет работать медленнее чем программа без таковых, например, при использовании макросов.
Соответственно код с использованием макросов будет больше за счет включения повторяющихся частей. Получается, что, если в лоб, то у нас есть два метода оптимизации по скорости и размеру. В реальности это не самый лучший выбор, например, огромная процедура, которая вызывается всего 5 раз наверно очень сильно влияет на размер и мало на скорость, и наоборот мелкая процедура вызываемая 100000 раз в цикле может очень сильно повлиять на время и мало на размер. Развитые средства программирования имеют уже встроенные оптимизаторы, но принципиальные идеи точно такие.