Во-первых, я не ищу способ заставить компилятор встроить реализацию каждой функции.
Чтобы уменьшить уровень ошибочных ответов, убедитесь, что вы понимаете, что на самом деле означает ключевое слово inline. Вот хорошее описание inline vs static vs extern.
Итак, мой вопрос, почему бы не отметить каждое определение функции inline? т.е. в идеале единственным модулем компиляции будет main.cpp. Или, возможно, еще несколько функций, которые не могут быть определены в файле заголовка (идиома pimpl и т.д.).
Теория, лежащая в основе этого нечетного запроса, обеспечит максимальную информацию оптимизатора для работы. Разумеется, это может быть встроенная реализация функций, но она также может выполнять "кросс-модульную" оптимизацию, так как есть только один модуль. Существуют ли другие преимущества?
Кто-нибудь пробовал это с помощью реального приложения? Увеличилась ли производительность? уменьшить?!?
Каковы недостатки маркировки всех определений функций inline?
- Компиляция может быть медленнее и будет потреблять гораздо больше памяти.
- Итеративные сборки нарушены, все приложение нужно будет перестроить после каждого изменения.
- Время ссылки может быть астрономическим.
Все эти недостатки влияют только на разработчика. Каковы недостатки времени выполнения?