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

 
 
> Оптимизация кода.
Jenya7
сообщение Dec 31 2015, 07:50
Сообщение #1


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

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



У меня мэйн функция выходит довольно большая. Многие куски кода можно было вынести в отдельные функции. Но мне важна скорость а переход в функцию и обратно это 4 такта если я не ошибаюсь. помножить на количество функций... или это уже паранойя? и еще я заметил если функцию вынести в отдельный модуль код увеличивается примерно на 100 байт.

Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
HardEgor
сообщение Dec 31 2015, 10:39
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 223
Регистрация: 3-03-06
Из: Tomsk
Пользователь №: 14 925



Цитата(Jenya7 @ Dec 31 2015, 13:50) *
У меня мэйн функция выходит довольно большая. Многие куски кода можно было вынести в отдельные функции. Но мне важна скорость а переход в функцию и обратно это 4 такта если я не ошибаюсь. помножить на количество функций... или это уже паранойя? и еще я заметил если функцию вынести в отдельный модуль код увеличивается примерно на 100 байт.

4 такта это где? Может и больше быть.
Если вам надо сократить код, то в функцию выносим часто повторяющиеся куски кода.
Если надо ускорить работу, то не выносим, но тогда естественно объем кода увеличится.
Для удобства написания можно писать функции, но с ключевым словом inline - тогда код функции будет линейно включен в программу при компиляции.
Go to the top of the page
 
+Quote Post
Jenya7
сообщение Dec 31 2015, 11:38
Сообщение #3


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

Группа: Участник
Сообщений: 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
Go to the top of the page
 
+Quote Post
HardEgor
сообщение Dec 31 2015, 12:33
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 2 223
Регистрация: 3-03-06
Из: Tomsk
Пользователь №: 14 925



Цитата(Jenya7 @ Dec 31 2015, 17:38) *
в том то и был вопрос много ли я выигрываю не вынося код в отдельные функции

Дак откуда же кто знает. Код у вас, берем и считаем на циклах которые критичны для вас по времени.

Цитата(Dog Pawlowa @ Dec 31 2015, 18:15) *
Сейчас все контроллеры стоят практически одинаково, что AVR, что CM4.
Есть ли смысл затруднять себе жизнь?

Т.е. надо затруднить себе жизнь освоением новой архитектуры или нового процессора? sm.gif
Go to the top of the page
 
+Quote Post
Dog Pawlowa
сообщение Dec 31 2015, 19:37
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823



Цитата(HardEgor @ Dec 31 2015, 15:33) *
Т.е. надо затруднить себе жизнь освоением новой архитектуры или нового процессора?

Это рутинная работа, отсидеться в кустах все равно не получится.


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- 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
|- - Dog Pawlowa   Цитата(Jenya7 @ Dec 31 2015, 14:38) а где...   Dec 31 2015, 12:15
||- - toweroff   Цитата(Dog Pawlowa @ Dec 31 2015, 15:15) ...   Dec 31 2015, 12:23
- - 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


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

 


RSS Текстовая версия Сейчас: 22nd August 2025 - 07:04
Рейтинг@Mail.ru


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