|
Оптимизация кода. |
|
|
|
 |
Ответов
|
Dec 31 2015, 10:39
|
Гуру
     
Группа: Свой
Сообщений: 2 223
Регистрация: 3-03-06
Из: Tomsk
Пользователь №: 14 925

|
Цитата(Jenya7 @ Dec 31 2015, 13:50)  У меня мэйн функция выходит довольно большая. Многие куски кода можно было вынести в отдельные функции. Но мне важна скорость а переход в функцию и обратно это 4 такта если я не ошибаюсь. помножить на количество функций... или это уже паранойя? и еще я заметил если функцию вынести в отдельный модуль код увеличивается примерно на 100 байт. 4 такта это где? Может и больше быть. Если вам надо сократить код, то в функцию выносим часто повторяющиеся куски кода. Если надо ускорить работу, то не выносим, но тогда естественно объем кода увеличится. Для удобства написания можно писать функции, но с ключевым словом inline - тогда код функции будет линейно включен в программу при компиляции.
|
|
|
|
|
Dec 31 2015, 11:38
|
Профессионал
    
Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075

|
Цитата(HardEgor @ Dec 31 2015, 15:39)  4 такта это где? Может и больше быть. Для удобства написания можно писать функции, но с ключевым словом inline - тогда код функции будет линейно включен в программу при компиляции. а где лучше прописать инлайновую функцию? так Код module.h static inline void Func(void) { // do something } или так Код module.h void Func(void);
module.c inline void Func(void) { // do something } Цитата(HardEgor @ Dec 31 2015, 15:39)  4 такта это где? Может и больше быть. Если вам надо сократить код, то в функцию выносим часто повторяющиеся куски кода. Если надо ускорить работу, то не выносим, но тогда естественно объем кода увеличится. в том то и был вопрос много ли я выигрываю не вынося код в отдельные функции
Сообщение отредактировал Jenya7 - Dec 31 2015, 11:41
|
|
|
|
|
Dec 31 2015, 12:15
|
Гуру
     
Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823

|
Цитата(Jenya7 @ Dec 31 2015, 14:38)  а где лучше прописать инлайновую функцию? Как в месте вызова будет встроена inline функция, если текст ее не виден? Отсюда и исходите. Цитата(Jenya7 @ Dec 31 2015, 14:38)  в том то и был вопрос много ли я выигрываю не вынося код в отдельные функции Важно, что вы теряете - понимание кода, понятную структуру, иерархию в проекте. Сейчас все контроллеры стоят практически одинаково, что AVR, что CM4. Есть ли смысл затруднять себе жизнь? Кстати, если разрешить максимальную оптимизацию, то сам компилятор развернет некоторые функции.
--------------------
Уходя, оставьте свет...
|
|
|
|
|
Dec 31 2015, 12:23
|

Гуру
     
Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514

|
Цитата(Dog Pawlowa @ Dec 31 2015, 15:15)  Кстати, если разрешить максимальную оптимизацию, то сам компилятор развернет некоторые функции. живой пример - Keil 5, последний с -O0 размер кода 33кб с -O3 - 22кб с включенной Cross-Module optimization - 13(!!!)кб правда, не смотрел, как там функции разворачиваются
|
|
|
|
Сообщений в этой теме
Jenya7 Оптимизация кода. Dec 31 2015, 07:50 Ruslan1 Цитата(Jenya7 @ Dec 31 2015, 09:50) У мен... Dec 31 2015, 09:19 Jenya7 Цитата(Ruslan1 @ Dec 31 2015, 14:19) Это ... Dec 31 2015, 09:28  HardEgor Цитата(Jenya7 @ Dec 31 2015, 17:38) в том... Dec 31 2015, 12:33   Dog Pawlowa Цитата(HardEgor @ Dec 31 2015, 15:33) Т.е... Dec 31 2015, 19:37 SlavaV Цитата(Jenya7 @ Dec 31 2015, 15:50) У мен... Jan 1 2016, 03:11 smalcom Цитата(Jenya7 @ Dec 31 2015, 09:50) У мен... Jan 2 2016, 22:08 Dog Pawlowa Цитата(smalcom @ Jan 3 2016, 01:08) главн... Jan 3 2016, 02:53 smalcom ЦитатаНе уверен, что это корректный пример, с одно... Jan 3 2016, 13:30 Dog Pawlowa Цитата(smalcom @ Jan 3 2016, 16:30) Тем н... Jan 3 2016, 15:04 smalcom ЦитатаДизассемблер в этом виде мало что дает, т.к.... Jan 3 2016, 19:36 Dog Pawlowa Цитата(smalcom @ Jan 3 2016, 22:36) что в... Jan 3 2016, 20:24 smalcom ЦитатаМожет, в конкретном случае это даст что-то т... Jan 4 2016, 07:27 Dog Pawlowa Цитата(smalcom @ Jan 4 2016, 10:27) я вам... Jan 4 2016, 09:28 smalcom ЦитатаЭто потому что функции пустые, в них не изме... Jan 4 2016, 10:36 Dog Pawlowa Цитата(smalcom @ Jan 4 2016, 13:36) куски... Jan 4 2016, 11:01 Jenya7 вобщем инлайнить функции и будет всем счастье. с... Jan 5 2016, 09:39 smalcom говоришь, показываешь - бестолку да-да, с НГ ))
-... Jan 5 2016, 09:42
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|