LINUX.ORG.RU

оператор inline в Си


0

0

Сабж. От чего зависит, будет ли компилятор в любом случае встраивать текст функции в место вызова и в каких случаях не будет наверняка?

★★★

от сложности функции + возможностей компилятора

aton
()

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

Компилятор вообще _не обязан_ встраивать. inline - это рекомендация компилятору. ЕМНИП gcc умеет встраивать и без этой рекомендации.

Begemoth ★★★★★
()
Ответ на: комментарий от Begemoth

>см на выхлоп gcc -S

Я как-то подумал, что начну учить ассемблер, когда кто-то меня в него ткнёт носом... Видно, пора :)

shuthdar ★★★
() автор топика
Ответ на: комментарий от shuthdar

Сначала, что нибудь по машинной архитектуре, e.g. Structured Computer Organization Танненбаума, а потом - Intel Architecture Software Developers Manual.

Вообще погугли на тему linux assembly

Begemoth ★★★★★
()

во первых inline это не оператор:)

основной смысл от инлайн в том что зная контекст можно легче оптимизировать. Поэтому даже если функция тяжелая, но часть аргументов константы, есть шанс что она встроится потому что знание констант позволит отбросить массу лишнего кода.

dilmah ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.