Форум программистов, компьютерный форум, киберфорум
Наши страницы
Микроконтроллеры Atmega AVR
Войти
Регистрация
Восстановить пароль
 
 
vtodymyr17m
0 / 0 / 0
Регистрация: 27.10.2012
Сообщений: 27
#1

Определение эффективности программного кода. - Atmega AVR микроконтроллер

04.03.2014, 00:15. Просмотров 39750. Ответов 199
Метки нет (Все метки)

Всем привет, собственно вопрос в заголовке, есть ли какие-нибудь методы, которые позволят определить на сколько та или иная функция или вся программа целиком, написана эффективно т.е. соответствует минимальному количеству занимаемой памяти программ и тактов процессора, необходимых для выполнение программы, которой в свою очередь предъявляется некоторый список требований?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.03.2014, 00:15
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Определение эффективности программного кода. (Atmega AVR микроконтроллер):

Организация тестирования программного кода для МК
Привет народ. Я работаю в фирме производящей счётчики электроэнергии в отделе...

Определение времени работы кода для ATmega128
Здравствуйте. Подскажите как можно узнать время работы кода для контроллера...

Разработка программного модуля
Если содержимое ячейки внутреннего ОЗУ (DSEG) с адре-сом 40h больше #A0h,...

Разработка программного модуля
Ребят прошу вас помощи, нужно разработать программный модуль:

Разработка аппаратно-программного комплекса
дали курсовую работу... Но незнаю счего все начать.. помогите.. Тематика...

Экспериментальное определение эффективности сортировки
Здравствуйте, у меня возникла такая проблема, мне нужно определить, сколько в...

199
div
0 / 0 / 0
Регистрация: 26.01.2009
Сообщений: 3
05.04.2014, 22:25 #181
Цитата Сообщение от flomdger
Цитата Сообщение от div
Разумеется - на то и оптимизация. Компилятор вырезал все, что в данный момент не используется. Поэтому и не имеет смысла мериться на таких вырожденных примерах.
Так это вы ведь влезли в разговор, говоря что есть разница между O2 и Os в данном примере. Хотя как оказалось - её нет.

Нет, я утверждал две вещи:

1. Если требуется получить минимальный размер кода, то надо использовать Os, а не другие оптимизации. По крайней мере, на первом этапе.

2. Если какой-то компилятор не сумел соптимизировать рассматриваемый пример, то его надо обновить или заменить (если размер кода критичен).
0
dimyurk1978
0 / 0 / 0
Регистрация: 07.02.2106
Сообщений: 3,047
06.04.2014, 03:46 #182
Если пишете на AB, только из-за того, что вам когда-нибудь может быть потребуется жесткий реалтайм, то вы сам себе злобный буратина. Я перешел на си и скорость сдачи проектов возросла в разы. А если мне потребуется жесткий реалтайм, то на асм нисколько не трудно вернуться. Вставки асма си позволяет, опять же.
0
Otixomdr_1
0 / 0 / 0
Регистрация: 28.06.2010
Сообщений: 211
21.04.2014, 23:46 #183
Цитата Сообщение от dymyurk1978
Если пишете на AB, только из-за того, что вам когда-нибудь может быть потребуется жесткий реалтайм, то вы сам себе злобный буратина. Я перешел на си и скорость сдачи проектов возросла в разы. А если мне потребуется жесткий реалтайм, то на асм нисколько не трудно вернуться. Вставки асма си позволяет, опять же.
Скорость разработки на СИ возросла в разы по сравнению с классическим ассемблером.
Но писать на классическом ассемблере – вроде как анахронизм.
АБ раз в 5 лучше классического ассемблера. Быстрее ли написать и отладить на СИ, чем на АБ, по крайней мере, для задач, решаемых на МК АВР – большой вопрос.
А вот как раз ассемблерные вставки в СИ мне напоминают костыли. Потом если вставки достаточно большие, то, фактически, приходится писать на неудобном ассемблере.

Я пока не вижу неудобств АБ. При написании программы основная задача – продумать, что и как будет делаться. А потом все это изложить на АБ – простецкая задача.
Поэтому пока пишу на АБ. Плюс еще сильная нехватка времени – следствие довольно жесткой «рыночной» борьбы.

Цитата Сообщение от ShodS
Не верю, что они хают Си... Скорее всего они - когда нужно - применяет Асм... Хаить Си и иногда от него отходить - это разные вещи.....
Я и сам например не собираюсь отказываться от асма... но за пару лет как взялся за Си, необходимость в асме возникала только один раз... ито из-за ограниченности tiny13..... http://asis-kbr.ru/forum/viewtopys.php?f=11&t=162
Про то, что «хают Си», я не говорил. Думаю, СИ создавался под другие задачи и плохо подходит для МК.
У меня вообще создалось впечатление, что СИ кое-как приспособили под МК и спихнули народу, пусть мучаются, альтернативы нет. Лучше бы разработали развитой ассемблер. Но ассемблер – бесплатный, на нем не заработаешь.

Цитата Сообщение от ShodS
Цитата Сообщение от Otixomdr_1
Я пока ATMiko32 не могу заполнить, хотя приличный набор - сенсорная клавиатура, пара двухстрочных индикаторов, три периферийных МК, следящая схема, пищалка, светодиоды, таймер.
Думаю что на асме - это все может даже в мега8 поместится :).....

Сомнительно. Во первых, заняты все выводы МК, а у мега8 их гораздо меньше.
Во вторых, там много всего. Периферийные МК – тоже непростые системы, там и измерительные и следящие схемы. Центральному МК приходится анализировать и выдавать всяческие аварийные ситуации во всех периферийных блоках, а таких ситуаций много.
Много разных режимов аппарата, даже пуск непростой, много разных установок, настроек параметров работы периферийных блоков и т.д.

Несколько ужать код можно, но, пока идет опытная эксплуатация, это ни к чему. Пусть будет запас.

Цитата Сообщение от flomdger
Цитата:
Одна из причин – жесткий реалтайм.
Аргументы? Вы утверждаете что на си нельзя написать программу работающую в жестком реальном времени?

Наверно, можно. Но, думаю, на АБ это сделать гораздо проще. Зачем же мучиться.

инкер"]Поддерживаю во всем, кроме выигрыша АБ при жестком тайминге перед АСМ. ))
Ловил АБ на "самодеятельности" именно в ущерб скорострельности, к сожалению не помню на каком форуме задавал вопросы апологетам АБ.[/QUOTE]

При жестком тайминге выигрыш АБ перед АСМ остается в удобстве написании программы.
Честно говоря, про проблему "самодеятельности" АБ не понял. Там ведь сразу показываются ассемблерные команды и можно все сразу проанализировать и откорректировать.
0
dimyurk1978
0 / 0 / 0
Регистрация: 07.02.2106
Сообщений: 3,047
22.04.2014, 04:50 #184
Цитата Сообщение от Otixomdr_1
си бяка, си то, си это
Вы же сами написали, время - рынок, все такое. Вы не пробовали писать на си. Сравнивать не с чем. Все что вы написали - доводы курильщика, почему он не бросает курить. Плюс агромадная инерция мышления. Ну трудно человеку перестроиться резко. Мне трудно было перейти на си. После нескольких лет асма. Начало далось нелегко. Но я начал понимать пользу перехода. И начал потихоньку осваивать параллельно с проектами на асме. Как только у меня появились первые результаты, все пошло рывками. Это как с лисапеда пересесть на автомобиль. Поначалу трудно, а потом как тапочку в пол и вперед.
0
ftomdkir
0 / 0 / 0
Регистрация: 12.04.2012
Сообщений: 97
22.04.2014, 05:41 #185
Про то, что «хают Си», я не говорил. Думаю, СИ создавался под другие задачи и плохо подходит для МК.
Естественно, Си это язык системного программирования, он не то чтобы хорошо подходит для обработки данных. К тому же си был создан под фон-Неймановскую архитектуру, так что основные грабли из-за этого. Но есть зато громадный плюс - универсальность.

Наверно, можно. Но, думаю, на АБ это сделать гораздо проще. Зачем же мучиться.
Я вам больше скажу. Разницы вообще нет никакой. Си это не байт-код. Всё тот же линейный код исполняющий функцию за функцией. Время работы каждой функции известно точно так же как и на голом асме.
0
kpk
0 / 0 / 0
Регистрация: 07.04.2013
Сообщений: 461
22.04.2014, 06:23 #186
Цитата Сообщение от flomdger
Я вам больше скажу. Разницы вообще нет никакой. Си это не байт-код. Всё тот же линейный код исполняющий функцию за функцией. Время работы каждой функции известно точно так же как и на голом асме.
Почему обязательно нужно рассмотрение данной темы сводить к рекомендации использования Си?
Вы знаете всю "кухню" преобразования кода из одного представления в маш коды?

P.S. Если Вы такие умные то объясните факт разработки Колибри OC на ассемблере.
0
dimyurk1978
0 / 0 / 0
Регистрация: 07.02.2106
Сообщений: 3,047
22.04.2014, 06:51 #187
Цитата Сообщение от KPK
Почему обязательно нужно рассмотрение данной темы сводить к рекомендации использования Си?
Вы знаете всю "кухню" преобразования кода из одного представления в маш коды?
P.S. Если Вы такие умные то объясните факт разработки Колибри OC на ассемблере.
Каждой задаче свой инструмент. Если задача требует особого быстродействия, тогда асм. А когда ты всегда считаешь такты и размер программы, из особого упорства, это уже просто ослиное упрямство. Время сейчас дороже. Вышивание крючком полезное времяпровождение - когда у тебя крыша над головой и о пропитании не нужно думать, не говоря уж о других потребностях.
Так же асм уместен, когда ты работаешь в особом направлении. Что у тебя все задачи действительно требуют быстродействия и особых условий.
0
45893569365
0 / 0 / 0
Регистрация: 06.04.2013
Сообщений: 172
22.04.2014, 08:39 #188
Есть такая программа Understomd (http://www.scitools.som/)
Очень облегчает начало понимания незнакомого проекта. Ну и на свой можете натравить, если у вас есть иллюзия, что он структурирован и изящен.
0
YTYOUT
0 / 0 / 0
Регистрация: 02.10.2012
Сообщений: 1,946
22.04.2014, 12:39 #189
Интересно , а если ее натравить саму на себя. Какой результат?
0
ftomdkir
0 / 0 / 0
Регистрация: 12.04.2012
Сообщений: 97
22.04.2014, 15:59 #190
Вы знаете всю "кухню" преобразования кода из одного представления в маш коды?
Мало того что это знание не нужно для того чтобы посчитать сколько и какая функция будет выполнятся, так ещё и есть поговорка такая, что плох тот программист который не знает во что компилируется его код.
0
yiv91
0 / 0 / 0
Регистрация: 31.01.2013
Сообщений: 1,625
23.04.2014, 17:41 #191
Цитата Сообщение от okotimiv
Блин, ребята, на дворе 2014 год. Изучать ассемблер для того чтобы перейти с него на С - это уже просто за гранью добра и зла :) Сие мероприятие потеряло актуальность уже лет 15 назад...
Да что вы говорите такое.
Однажды я решил делать новый проект на С. В задаче процессор Мега8 должен был спать все время, изредка просыпаясь. Для этого решено было использовать вачдог. Этот вачдог делает сброс, идентичный натуральному. После сброса нужно определить его причину и продолжать жить. Для этого надо завести переменные, которые не портятся во время сброса. Как выглядит на С описание таких переменных, можно вас спросить?
0
omx
0 / 0 / 0
Регистрация: 11.11.2016
23.04.2014, 18:14 #192
Цитата Сообщение от yiv91
надо завести переменные, которые не портятся во время сброса. Как выглядит на С описание таких переменных, можно вас спросить?
Только средствами С такое сделать нельзя. Тут нужно подключать фичи компилятора/линкера (для *-gcc):

создаём секцию в скрипте линкера:
Код
    .noinit:
{
*(.noinit);
*(.noinit.*);
} >ROM
А в коде делаем
Код
uint8_t nv_foo __attribute__((section(".noinit.nv_foo")));
Далее работаем с переменной как душе угодно, но при первом включении в ней может быть мусор.

Для IAR значительно проще.

Знание ассемблера для этого не надо, но надо знать инструмент, который используешь.
0
oomomstir
0 / 0 / 0
Регистрация: 07.02.2106
Сообщений: 1,864
23.04.2014, 18:16 #193
Цитата Сообщение от yiv91
Для этого надо завести переменные, которые не портятся во время сброса. Как выглядит на С описание таких переменных, можно вас спросить?
Код
volatile int foo __attribute__ ((section (".noinit")));
вроде (см. http://www.eit.lth.se/fileadmin/eit/cou ... tions.html )
Но согласен, это неочевидно. Но и задача вряд ли для новичка.

omx, разве готовой секции .noinit нету?

А знание асма дюже полезно, конечно (чёрт, мне и на Маке оно периодически нужно). Но по нынешним временам это advanced skill, приобретаемый уже после освоения ЯВУ.
0
ftomdkir
0 / 0 / 0
Регистрация: 12.04.2012
Сообщений: 97
23.04.2014, 18:46 #194
А знание асма дюже полезно, конечно (чёрт, мне и на Маке оно периодически нужно). Но по нынешним временам это advanced skill, приобретаемый уже после освоения ЯВУ.
Для ПК да, но не для МК.

Хотя, живут же ардуинщики как-то, и ничего ... пользуются объектами и заливают 20 килобайтные "скетчи" для мигания светодиодом.
0
oomomstir
0 / 0 / 0
Регистрация: 07.02.2106
Сообщений: 1,864
23.04.2014, 18:55 #195
flomdger, я был в некотором шоке, когда после 10-летнего перерыва снова взялся за МК (в давние времена писал на асме) и обнаружил, что для attiny13 можно писать на C. Кстати, понятно, что никаких 20 килобайт туда не заливается =).

И, насколько я могу судить, подход именно такой: асм для крутых (и требует больше сил и знаний, чем Си), так что за основу берётся Си, а на асм переписывается в случае жёсткой необходимости (ну или если для понта хочется впихнуть невпихуемое).
0
omx
0 / 0 / 0
Регистрация: 11.11.2016
23.04.2014, 19:14 #196
Цитата Сообщение от oomomstir
omx, разве готовой секции .noinit нету?
Где-то есть, где-то нету. Для большинства семейств - нету (по моим наблюдениям), т.к. .noinit не является стандартной секцией.
0
kpk
0 / 0 / 0
Регистрация: 07.04.2013
Сообщений: 461
23.04.2014, 22:47 #197
Цитата Сообщение от oomomstir
И, насколько я могу судить, подход именно такой: асм для крутых (и требует больше сил и знаний, чем Си), так что за основу берётся Си, а на асм переписывается в случае жёсткой необходимости (ну или если для понта хочется впихнуть невпихуемое).
Асм не самое "малоразмерное" решение. Например разные техники свёрнутого шитого кода с использованием стековой (0-адресной) вычислительной машины дают очень компактные решения.
0
YTYOUT
0 / 0 / 0
Регистрация: 02.10.2012
Сообщений: 1,946
23.04.2014, 22:59 #198
асм для крутых (и требует больше сил и знаний, чем Си)
Асм в первую очередь требует отличное знание структуры процессора с которым работаешь.
0
oomomstir
0 / 0 / 0
Регистрация: 07.02.2106
Сообщений: 1,864
24.04.2014, 00:13 #199
KPK, для шитого кода надо ещё написать EXECUTE. На асме. И для сжатого эта машина будет не такой примитивной, как в обычной форт-системе.
Но вообще я имел в виду не только размер, но и быстродействие. См., к примеру, shiftpwm.

YTYOUT, именно. Ну и ещё больше внимания, аккуратности и педантизма. Плюс расчётливость (хотя бы для того, чтобы распланировать использование регистров)
0
kpk
0 / 0 / 0
Регистрация: 07.04.2013
Сообщений: 461
24.04.2014, 01:21 #200
Цитата Сообщение от oomomstir
YTYOUT, именно. Ну и ещё больше внимания, аккуратности и педантизма. Плюс расчётливость (хотя бы для того, чтобы распланировать использование регистров)
Один из моментов, чем мне нравится Форт, так то что "планированием" регистров можно не заниматься :)
На Асм также организовывал передачу параметров между функциями через выделенный по указателю стек данных + верхний элемент стека в одном из регистров контроллера. Остальные регистры или временные, или служебные (например для переключения контекста при мультизадачности) или на разные усмотрения. Тестировать данные функции тоже получалось легко с уровня даже терминального интерфейса взаимодействия с программой.
0
24.04.2014, 01:21
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.04.2014, 01:21
Привет! Вот еще темы с решениями:

Оценка эффективности кода
Нужно сравнить эффективность двух алгоритмов. Первое что пришло в голову -...

Повышение эффективности кода: использование указателя на функцию
Решил всё-таки наконец добить тему с "Динамическим приложением, использующим...

Определение иерархии программного обеспечения
Здравствуйте. в программировании на java я новичок (написала пару простых...

Доработка программного кода
Здравствуйте,уважаемые программисты..Срочно нужна ваша помощь. У меня есть уже...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
200
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru