реклама на сайте
подробности

 
 
> inline
Злодей
сообщение Apr 28 2009, 07:21
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 149
Регистрация: 29-04-08
Из: Петербург
Пользователь №: 37 142



Доброго дня!

Добавил в функцию строчку - сложить два байта и программа выросла на 20Байт! Так же со всеми функциями. Какая опция могла заставить компилятор инлайнить все и вся?

Сообщение отредактировал Злодей - Apr 28 2009, 07:24
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 5)
Сергей Борщ
сообщение Apr 28 2009, 07:34
Сообщение #2


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(Злодей @ Apr 28 2009, 10:21) *
Добавил в функцию строчку - сложить два байта и программа выросла на 20Байт! Так же со всеми функциями. Какая опция могла заставить компилятор инлайнить все и вся?
Опция "инлайнить все и вся". У вашего компилятора такая есть?


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
Злодей
сообщение Apr 28 2009, 08:04
Сообщение #3


Частый гость
**

Группа: Участник
Сообщений: 149
Регистрация: 29-04-08
Из: Петербург
Пользователь №: 37 142



И правда нет такой laughing.gif. Зато есть __attribute__( (noinline) ). Проверил, этот атрибут снимает проблему с ф-ции, но нельзя же так извращаться wub.gif

Работаю с GCC для AVR.
Go to the top of the page
 
+Quote Post
MrYuran
сообщение Apr 28 2009, 08:09
Сообщение #4


Беспросветный оптимист
******

Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646



Цитата(Злодей @ Apr 28 2009, 12:04) *
И правда нет такой laughing.gif. Зато есть __attribute__( (noinline) ).

Есть соответственная опция компилятора, которая запрещает инлайнить.
Только зачем?
Неужто из-за 20 байт?
Я наоборот, борюсь, чтобы как можно больше инлайнилось, особенно в прерываниях


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post
ReAl
сообщение Apr 28 2009, 08:54
Сообщение #5


Нечётный пользователь.
******

Группа: Свой
Сообщений: 2 033
Регистрация: 26-05-05
Из: Бровари, Україна
Пользователь №: 5 417



Цитата(Злодей @ Apr 28 2009, 11:04) *
И правда нет такой
Зато есть -O3, при котором компилятор порог для встраивания смещает и норовит встроить всё.
Для AVR почти всегда лучше всего -Os


--------------------
Ну, я пошёл… Если что – звоните…
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Apr 28 2009, 09:01
Сообщение #6


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(Злодей @ Apr 28 2009, 11:04) *
Работаю с GCC для AVR.
Ага, один секрет у партизана выведали smile.gif Осталось узнать версию и параметры, с которым вызывается компилятор. Там есть куча опций для управления оптимизаций, в том числе и встраиванием. На -O3 он старается сделать максимально линейный код, ибо это положительно сказывается на быстродействии для процессоров с конвейерами и кешем. Для AVR оптимальная оптимизация -Os, плюс можно поиграться с опциями -fno-inline-small-functions, -fno-inline-functions, --param inline-call-cost=<тут число от 0 до 9>, -fno-split-wide-types, -fno-tree-scev-cprop


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 25th July 2025 - 13:03
Рейтинг@Mail.ru


Страница сгенерированна за 0.02445 секунд с 7
ELECTRONIX ©2004-2016