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

 
 
> Много мелких функций или одна большая?
GYUR22
сообщение Feb 11 2011, 12:39
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 58
Регистрация: 16-02-09
Пользователь №: 44 931



Есть одна большая функция в программе - которую можно поделить на много мелких ...
Вопрос как выгоднее по скорости исполнения - разделить ее на 18 мелких (по смыслу) или оставить как есть?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
GYUR22
сообщение Feb 14 2011, 13:56
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 58
Регистрация: 16-02-09
Пользователь №: 44 931



меня интересует встроится ли код или нет если оставить просто inline ( все эти функции я вывел в отдельный файл и обозвал с inline)

ps про поверье это пять...

Сообщение отредактировал GYUR22 - Feb 14 2011, 13:57
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение Feb 14 2011, 15:47
Сообщение #3


неотягощённый злом
******

Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643



Цитата(GYUR22 @ Feb 14 2011, 16:56) *
меня интересует встроится ли код или нет если оставить просто inline
Встроится или нет.
Я же Вам написал что нужно сделать чтобы всегда встраивалось.
Вы что-то не смогли осознать?

Цитата(_Pasha @ Feb 14 2011, 17:09) *
Пока что с оптимизацией как раз "болезни роста"
Думается что это бесконечная болезнь, во всяком случае хочется в это верить.


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post
sergeeff
сообщение Feb 14 2011, 17:19
Сообщение #4


Профессионал
*****

Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007



Цитата(demiurg_spb @ Feb 14 2011, 18:47) *
Я же Вам написал что нужно сделать чтобы всегда встраивалось.


В общем случае нет гарантированного способа "заставить" компилятор встроить inline функцию. Может встроить, а может - нет. Все пляски с прагмами и атрибутами повышают вероятность встраивания.
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение Feb 15 2011, 17:43
Сообщение #5


неотягощённый злом
******

Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643



Цитата(sergeeff @ Feb 14 2011, 20:19) *
В общем случае нет гарантированного способа "заставить" компилятор встроить inline функцию. Может встроить, а может - нет. Все пляски с прагмами и атрибутами повышают вероятность встраивания.
С чего такой пессимизм?
Насколько я знаю если в gcc дал атрибут, так он отрабатывает по полной.
Не встречалось в моей практике исключений (я сейчас про gcc только говорю).
Приведите примерчик кода с листингом для убедительности.

Если разить вашу теорию, то и данные предназначенные для помещения в секции EEPROM (это при помощи атрибутов в gcc происходит) ИНОГДА могут оказаться в другой секции.
Это абсурд!


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post
sergeeff
сообщение Feb 15 2011, 18:26
Сообщение #6


Профессионал
*****

Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007



Цитата(demiurg_spb @ Feb 15 2011, 20:43) *
С чего такой пессимизм?
...
Это абсурд!


Поспокойнее сэр!

Это не моя теория.

Читаем, например, http://msdn.microsoft.com/en-us/library/z8...=vs.80%29.aspx:


Цитата
The insertion (called inline expansion or inlining) occurs only if the compiler's cost/benefit analysis show it to be profitable. Inline expansion alleviates the function-call overhead at the potential cost of larger code size.


чуть ниже:

Цитата
The compiler treats the inline expansion options and keywords as suggestions. There is no guarantee that functions will be inlined. You cannot force the compiler to inline a particular function, even with the __forceinline keyword. When compiling with /clr, the compiler will not inline a function if there are security attributes applied to the function.
Go to the top of the page
 
+Quote Post
Petka
сообщение Feb 15 2011, 18:48
Сообщение #7


Профессионал
*****

Группа: Свой
Сообщений: 1 453
Регистрация: 23-08-05
Пользователь №: 7 886



Цитата(sergeeff @ Feb 15 2011, 21:26) *
Поспокойнее сэр!

Это не моя теория.
...

У микрософта сносная документация, но не лучшие компиляторы.
Если по теме, то надо приводить выдержки из "С99".
В gcc насколько помню есть атрибут с говорящим названием always_inline.
На моей практике при "-O3" даже inline в большинстве случаев указывать не надо, само автоматически встроится.

Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- GYUR22   Много мелких функций или одна большая?   Feb 11 2011, 12:39
- - Сергей Борщ   Если мелкие сделать принудительно встраиваемыми - ...   Feb 11 2011, 12:46
|- - MrYuran   Цитата(Сергей Борщ @ Feb 11 2011, 15:46) ...   Feb 11 2011, 12:56
|- - demiurg_spb   Цитата(Сергей Борщ @ Feb 11 2011, 15:46) ...   Feb 12 2011, 07:53
- - GYUR22   Эээ про Idle можно поподробнее? ps эта функция ис...   Feb 11 2011, 13:20
|- - MrYuran   Цитата(GYUR22 @ Feb 11 2011, 16:20) Эээ п...   Feb 11 2011, 13:46
- - GYUR22   богатая идея... надо обмуслить... тока общаяя схем...   Feb 11 2011, 13:52
|- - MrYuran   Цитата(GYUR22 @ Feb 11 2011, 16:52) тока ...   Feb 11 2011, 14:19
|- - _Pasha   Цитата(MrYuran @ Feb 11 2011, 17:19) Вот ...   Feb 11 2011, 15:51
|- - MrYuran   Цитата(_Pasha @ Feb 11 2011, 18:51) И гд...   Feb 14 2011, 11:36
- - GYUR22   размер кода пока не пугает ... оперативки уже мало...   Feb 12 2011, 09:40
|- - _Pasha   Цитата(GYUR22 @ Feb 12 2011, 13:40) но ес...   Feb 12 2011, 10:15
|- - demiurg_spb   Цитата(GYUR22 @ Feb 12 2011, 12:40) разме...   Feb 12 2011, 14:03
- - GYUR22   static inline - не компилируется... пишет что лин...   Feb 14 2011, 11:16
- - alexeyv   Цитатаstatic inline - не компилируется... 1. stat...   Feb 14 2011, 11:25
- - GYUR22   еще раз для тупого... чем лучше static inline по с...   Feb 14 2011, 12:28
|- - MrYuran   Цитата(GYUR22 @ Feb 14 2011, 15:28) чем л...   Feb 14 2011, 12:51
|- - sergeeff   Цитата(Petka @ Feb 15 2011, 21:48) У микр...   Feb 15 2011, 20:27
- - _Pasha   Цитата(MrYuran @ Feb 14 2011, 15:51) Есть...   Feb 14 2011, 14:09
- - GYUR22   C++, C99, and GNU C each have support for inline f...   Feb 14 2011, 17:27
- - _Pasha   Цитата(GYUR22 @ Feb 14 2011, 21:27) выдер...   Feb 14 2011, 20:02
- - GYUR22   честно говоря не собирался никого мучить, даже тем...   Feb 14 2011, 20:22
|- - sergeeff   Цитата(GYUR22 @ Feb 14 2011, 23:22) Всем ...   Feb 14 2011, 20:54
|- - defunct   Цитата(GYUR22 @ Feb 14 2011, 22:22) имхо:...   Feb 17 2011, 14:44
|- - demiurg_spb   Цитата(defunct @ Feb 17 2011, 17:44) Ну т...   Feb 17 2011, 19:18
|- - sergeeff   Цитата(demiurg_spb @ Feb 17 2011, 22:18) ...   Feb 17 2011, 20:31
|- - demiurg_spb   Повторюсь, я говорю о avr-gcc и о контроллерах в к...   Feb 18 2011, 09:21
|- - sergeeff   Цитата(demiurg_spb @ Feb 18 2011, 12:21) ...   Feb 18 2011, 13:29
|- - demiurg_spb   В gcc, да и думаю во всех современных компиляторах...   Feb 18 2011, 20:10
- - alexeyv   Цитатачем лучше static inline по сравнению с прост...   Feb 15 2011, 04:56
- - dxp   Само указание ключевого слова inline в декларации ...   Feb 16 2011, 06:42
- - _Pasha   Что характерно - чем вопрос элементарнее, тем диск...   Feb 16 2011, 06:54
|- - dxp   Цитата(_Pasha @ Feb 16 2011, 12:54) Что х...   Feb 16 2011, 08:55
- - sergeeff   Про все современные компиляторы, как выше упоминал...   Feb 18 2011, 22:50
|- - _Pasha   Цитата(sergeeff @ Feb 19 2011, 02:50) хор...   Feb 19 2011, 05:01
|- - demiurg_spb   Цитата(sergeeff @ Feb 19 2011, 01:50) А р...   Feb 19 2011, 09:02
|- - sergeeff   Цитата(demiurg_spb @ Feb 19 2011, 12:02) ...   Feb 19 2011, 10:11
|- - _Pasha   Цитата(sergeeff @ Feb 19 2011, 14:11) Он,...   Feb 19 2011, 13:33
- - andron86   Цитата(GYUR22 @ Feb 11 2011, 13:39) Есть ...   Feb 19 2011, 06:09


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

 


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


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