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