Почему бы не пометить все в строке?

Во-первых, я не ищу способ заставить компилятор встроить реализацию каждой функции.

Чтобы снизить количество ошибочных ответов, убедитесь, что вы понимаете, что на самом деле означает ключевое слово inline . Вот хорошее описание: inline vs static vs extern .

Итак, мой вопрос, почему бы не отметить каждое определение функции встроенным ? т.е. в идеале, единственная единица компиляции - main.cpp . Или, возможно, еще несколько для функций, которые не могут быть определены в файле заголовка (идиома pimpl и т. Д.).

Теория, лежащая в основе этого странного запроса, заключается в том, что он предоставит оптимизатору максимум информации для работы. Конечно, он может встраивать реализации функций, но он также может выполнять «кросс-модульную» оптимизацию, поскольку существует только один модуль. Есть ли другие преимущества?

Кто-нибудь пробовал это в реальном приложении? Увеличилась производительность? уменьшение?!?

Каковы недостатки маркировки всех определений функций inline ?

  • Компиляция может быть медленнее и потреблять гораздо больше памяти.
  • Итерационные сборки не работают, все приложение будет необходимо перестраивать после каждого изменения.
  • Время соединения может быть астрономическим.

Все эти недостатки влияют только на разработчика. Каковы недостатки времени выполнения?

46
задан Community 23 May 2017 в 12:34
поделиться