В это историческое время, 2020, это только работа оптимизатора. Вы можете добиться большей скорости с помощью сборки, дело в том, что она не стоит ни по размеру, ни по скорости. При правильном программировании на C ++ ваш код будет достаточно быстрым и достаточно маленьким. Быть быстрее или меньше путаться в читаемости кода не стоит хлопот.
Тем не менее, макросы заменяют вещи на уровне препроцессора, шаблоны делают это на уровне компиляции. Вы можете ускорить компиляцию с помощью макросов, но хороший компилятор оптимизирует их больше, чем макросы. Это означает, что вы можете иметь тот же размер EXE или, возможно, меньше с шаблонами.
Огромные, 99%, проблемы со скоростью или размером в приложении происходят из-за ошибок программистов, а не из-за языка. Очень часто я обнаруживаю, что некоторые фото ресурсы в моем исполняемом файле имеют формат PNG, а не правильный JPG, и вуаля, у меня есть раздувание. Или что я случайно забыл использовать слабый_птр, чтобы разорвать ссылку, и теперь у меня есть два общих указателя, которые совместно используют 100 МБ памяти, которая не будет освобождена. Это почти всегда человеческая ошибка.