| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > inline функции..и размер |
| Автор: Coocky 1.12.2005, 16:22 |
| Спор тут зашел.. При использовании inline фуункции что теряем-размер исполняемого файла или размер занимаемой памяти , при выполнении проги |
| Автор: Darhazer 1.12.2005, 16:25 |
| размер исполняемого файла конечно ;) |
| Автор: Coocky 1.12.2005, 16:41 |
| Тут сравнение идет на Билдере и VC. Как-то по разному ведут себя. У первого exe растет, у второго память немного,а exe не меняется |
| Автор: nikitao 1.12.2005, 17:03 |
| Да не может этого быть.Inline ф-ция это тоже самое,что ты в кпждом ее использовании фактически вбиваешь сам текст ф-ции.Т е размер exe должен увеличеваться,но и скорость тоже |
| Автор: Coocky 1.12.2005, 17:18 | ||
Если бы я был Пинокио, у меня б все равно нос не вырос .Проверь Я может какие опции не включил, но пока по умолчанию |
| Автор: Darhazer 1.12.2005, 17:45 |
| А в принципе все зависить от компилятора. Компилятор не должен каждую inline функцию сделать inline и можеть сам решить коротких функциях сделать inline. Но по логике -> размер файла должен увеличиться |
| Автор: darkart 1.12.2005, 18:14 |
| Если компилятор соблаговолит сделать ф-цию Inline то размер exe увеличивается, а скорость ..., вобщем зависит от inline ф-ции. |
| Автор: Earnest 1.12.2005, 19:42 | ||
| Не все так уж однозначно. Если функция такая:
то, если сделать ее Inline, то размер кода только уменьшится... Не надо забывать про прологи-эпилоги, и прочие записи адреса возврата в стек... |
| Автор: srd 3.12.2005, 14:36 |
| Среднестатический компилятор умнее среднестатического программиста. Он может сам встраивать не-inline функции, и может не встраивать inline-функции |
| Автор: Mephistopheles 3.12.2005, 14:39 | ||
Всё зависит от компилера. Он сам решает ставить функцию, как inline или нет. Чтобы он стопудово втыкал, надо юзать __forceinline, но это стандарт Мелкомягких, а соответсвенно не кросплатформенный. |
| Автор: bel_nikita 3.12.2005, 15:02 | ||
| Coocky Поиком бы воспользовался inline — не более чем совет компилятору, а делать ее или нет — его личное дело.
Неа, не стопудово |
| Автор: maxim1000 3.12.2005, 15:26 |
| exe-шник не всегда увеличивается при увеличении размера исполняемого кода, иногда он будет оставаться таким же дело в том, что часто различные его части не просто записаны в файл друг за дружкой, а выровнены каким-либо образом для ускорения загрузки так что если код увеличился, но все равно не перестал помещаться в свою область, exe-шник останется по размеру тем же... |
| Автор: DeadSoul 3.12.2005, 15:33 | ||
И дядя Саттер не рекомендует делать функции inline, т.к. любой профайлер может сказать, что данную функцию стоит делать inline, но ни один не скажет, что ее не надо делать inline |
| Автор: Mephistopheles 4.12.2005, 06:01 | ||
Гон, не должно быть так. __forceinline для этого и создан, чтобы "насиловать". |
| Автор: oberonchik 4.12.2005, 10:22 |
| Там в опциях компилятора наверняка ещё должен быть размер функции, которую можно делать инлайн. По крайней мере под никсами в gcc такой параметр есть. |
| Автор: Earnest 4.12.2005, 21:59 | ||
У виндуса много чего "не должно быть так". Но есть. По крайней мере, вышеприведенное утерждение bel_nikita про forceinline абсолютно справедливо. |