-
- Теоретически компилятор должен ориентироваться на ключи оптимизации. Просят поменьше размер - лучше не инлайнить. Просят скорости - наоборот. И вообще, зачем лезть в эти дебри? Работает - не трогай. SciFi(158 знак., 19.12.2019 09:26)
- А как быть с моим примером ранее?.. POV_(245 знак., 20.12.2019 22:51, )
- Как-как... Никак. Ты же сам отказался искать косяк. То есть тема рассосалась сама собой. - SciFi(20.12.2019 23:02)
- Ну как ты красиво повернул это на меня ))).. POV_(237 знак., 20.12.2019 23:23, )
- Как-как... Никак. Ты же сам отказался искать косяк. То есть тема рассосалась сама собой. - SciFi(20.12.2019 23:02)
- То есть в будущем при -О2 gcc может заинлайнить как в 1м примере? _Constantin24(152 знак., 19.12.2019 11:06)
- Я даже не вникал. Искать логику не надо. Там могут быть критерии для инлайна, учитывающие разные факторы в пропорциях, ведомых только компиляторописателям. Какая разница? В другой версии компилятора всё может поменяться. - SciFi(19.12.2019 11:18)
- Вкратце: есть глобальная функция и метод класса. Почему то по глобальной функции идет ее вызов, а метод класса вставляется код. Но если реализацию метода класса выносим (так сказать из хедера) то получаем ее вызовов. Есть ли где описание, что _Constantin24(374 знак., 21.12.2019 10:43)
- А из скольки мест вызывается этот метод? Компиляторы часто инлайнят функи, которые вызываются только из одной точки. - LightElf(21.12.2019 13:14)
- Вот я вовсе не уверен, что если тело функции в хедере, то его вообще можно хоть как-то уговорить оформить в бинарнике отдельной функцией и делать вызовы. Пусть старшие товарищи поправят. - SciFi(21.12.2019 11:08)
- A function defined entirely inside a class/struct/union definition, whether it's a member function or a non-member friend function, is implicitly an inline function. - йцукен(21.12.2019 11:07, ссылка)
- Ну и что? "Since this meaning of the keyword inline is non-binding, compilers are free to use inline substitution for any function that's not marked inline, and are free to generate function calls to any function marked inline." - SciFi(21.12.2019 11:16)
- Спасибо! - _Constantin24(21.12.2019 11:15)
- Вкратце: есть глобальная функция и метод класса. Почему то по глобальной функции идет ее вызов, а метод класса вставляется код. Но если реализацию метода класса выносим (так сказать из хедера) то получаем ее вызовов. Есть ли где описание, что _Constantin24(374 знак., 21.12.2019 10:43)
- Я даже не вникал. Искать логику не надо. Там могут быть критерии для инлайна, учитывающие разные факторы в пропорциях, ведомых только компиляторописателям. Какая разница? В другой версии компилятора всё может поменяться. - SciFi(19.12.2019 11:18)
- А как быть с моим примером ранее?.. POV_(245 знак., 20.12.2019 22:51, )
- Теоретически компилятор должен ориентироваться на ключи оптимизации. Просят поменьше размер - лучше не инлайнить. Просят скорости - наоборот. И вообще, зачем лезть в эти дебри? Работает - не трогай. SciFi(158 знак., 19.12.2019 09:26)