Если они являются статическими блоками (без кода VTL в них), то включение их в качестве отдельных ресурсов, безусловно, будет работать намного лучше.Даже если они динамические (имеют код VTL), вы можете использовать #parse вместо #include и при этом получить лучшую производительность, чем макрос.Я даже не удивлюсь, узнав, что блоки #define VTL работают быстрее макросов, хотя я этого не проверял.Макросы хороши и очень полезны, но люди иногда злоупотребляют ими или злоупотребляют ими.
Недостатком #parse и #include является то, что вам нужно поддерживать больше отдельных файлов, но это цена за превосходную скорость.#define отлично подходит для блоков кода, которые не нуждаются в аргументах и / или должны передаваться в качестве ссылки, но вы должны использовать только блоки # define'd непосредственно в шаблоне, который их определяет, иначе все может запутаться.
Макросы хороши тем, что они принимают параметры и могут быть определены глобально, а глобально - там, где они работают лучше всего и имеют больше смысла.Я обычно стараюсь избегать локальных макросов, когда у меня есть разумная альтернатива.И когда я успешно избегаю использования локальных макросов, я отключаю их поддержку, чтобы получить небольшое ускорение.