Вот вам простой эксперимент: я скомпилировал Clang в обычном режиме Release+Asserts, и в таком же режиме, но добавив -fno-inline -fno-inline-functions. Измерялось время исполнения тестов (CPU time).
Если вы пишете типичное энтерпрайз GUI приложение, пожирающее мегатонны RAM, в которое меланхоличный пользователь раз в минуту тыкает мышкой и затем размышляет «а что это оно мне написало», то ваш подход оправдан. Я работаю в несколько другой области.
Модули не подразумевают что у вас не будет .h. Они останутся. Модули говорят что у вас не будет #include. В Clang Douglas Gregor идёт дальше и предлагает оставить и #include, но автоматически преобразовывать его в импорт, если .h модульный.
Инлайнинг полезен не только для того чтобы убрать оверхед на вызов функций (но это тоже очень важно для всяких геттеров), а ещё чтобы распространить информацию из места вызова в тело функции и убрать лишнее. Инлайнинг даёт большой положительный эффект по производительности для программ. Именно инлайнинг позволяет убирать оверхед абстракций C++, которые мы так любим.
Автор имел ввиду то, что имел ввиду (при условии что переведено правильно):
> Ладно, назовите любой проприетарный продукт, распространённый за последние 10 лет в датацентре… любом датацентре
Кроме того, какая разница когда была выпущена первая версия? Если сейчас нет свободной замены для этого продукта, дата выхода первой версии ничего не меняет.
Советам нужна вычитка. Первое, что бросается в глаза — терминология. unsigned — это не атрибут (это вид целочисленных типов), const — это не модификатор (это квалификатор), и методов в C++ тоже нет (есть функции-члены).
Не следует брать откуда-то файлы stdarg.h и types.h (который на самом деле stddef.h). Эти файлы — это не часть libc, это builtin заголовки вашего компилятора, они всегда поставляются с компилятором Си, они могут отличаться между версиями компилятора, и конечно же, реализация для, например, gcc и clang, различается.
R+A: 12m40.520s
R+A no-inline: 22m29.980s
Выводы о пользе инлайнинга делайте сами.
clang.llvm.org/docs/Modules.html
llvm.org/devmtg/2012-11/Carruth-OptimizingAbstractions.pdf
llvm.org/devmtg/2012-11/videos/Carruth-OptimizingAbstractions.mp4
Прощай, инлайнинг.
Тут скорее да, чем нет, но при условии что эти свободные аналоги в первую очередь существуют.
> Ладно, назовите любой проприетарный продукт, распространённый за последние 10 лет в датацентре… любом датацентре
Кроме того, какая разница когда была выпущена первая версия? Если сейчас нет свободной замены для этого продукта, дата выхода первой версии ничего не меняет.
Например, Vampir: vampir.eu/news/52 — последний релиз летом 2012 года.
Любом говорите? Google Search. Gmail. Amazon EC2.
> Не следует брать откуда-то файлы stdarg.h и types.h (который на самом деле stddef.h).
Используйте эти заголовки только такими, какие они идут с вашим компилятором.
channel9.msdn.com/Shows/Going+Deep/C-and-Beyond-2012-Andrei-Alexandrescu-Systematic-Error-Handling-in-C
А зачем вам на русском?!
computing.llnl.gov/tutorials/parallel_comp/
computing.llnl.gov/tutorials/bgq/index.html
computing.llnl.gov/tutorials/linux_clusters/
+ computing.llnl.gov/?set=training&page=index#training_materials в целом