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

 
 
> Сопоставление проектов С и АСМ, Немного цифр
SasaVitebsk
сообщение Feb 17 2008, 20:18
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521



Написал сначала проект на ASM в AVR Studio, а позже очень похожий на Си. И там и там вылизывал по скорости. Точнее особо не вылизывал. В обоих случаях камни с большим запасом. Естественно во втором проекте было всё намного грамотнее построено. Вопервых дробление шагов на основе ШИМ с большим коэффициентом, во вторых более красивое движение стрелок обеспечено. 18 скоростей с плавным переключением. Фильтрация более красивая. Обработка CAN некоторое место занимает. Тем не менее сравнивать можно

Результаты достаточно любопытны для неопределившихся. Попробовал свести в небольшую таблицу. smile.gif

Код
Камень       ! atmega8 ! at90can128 !
язык         !   asm   !    IAR C   !
-------------+---------+------------+
Число ШД     !    6    !     6      !
управл.      ! дрб 6   ! ШИМ дрб 16 !
Вх аналоговые!    6    !     3      !
Вх частотные !    0    !     1      !
Вх CAN       !    0    !     2      !
Цифр. флтр   !    +    ! + более слж!
Плавность    !    -    ! спец алг   !
Авар         !    +    !+ более слж !
-------------+---------+------------+
Размер кода  !  5019   !   6901     !
без доп табл !   -     !    672     !
Итого        !  5019   !   6229     !
Итого %      !   81    !    100     !
RAM          !  241    !    415     !
Итого %      !   58    !    100     !
-------------------------------------

Несколько попозже буду перетаскивать Этот проект на м8. То есть можно будет сопоставить практически 1 к 1 (с учётом значительных улучшений).
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Непомнящий Евген...
сообщение Feb 26 2008, 09:29
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 771
Регистрация: 16-07-07
Из: Волгодонск
Пользователь №: 29 153



По-моему, с heap основная проблема в том, как рассчитать максимальную загрузку. И что делать, если память кончилась - допустимо ли отклонить запрос. Например, пример defunct - в 99% времени обработчику нужен только 1 пакет. Если таких обработчиков 5 - то какая куча нам нужна? На 10 пакетов? В этом случае мы не выигрываем по сравнению со статическим выделением памяти. А если, к примеру, на 6 пакетов - то что делать в ситуации, когда пакетов 7. Или можно доказать, что ни в один момент времени не будет больше 6 пакетов...
Следующий нюанс - если вы храните объекты разного размера, то можно получить ситуацию, когда из-за фрагментации невозможно будет разместить новый объект при наличии значительного кол-ва свободной памяти. Тут по-ходу придется мастерить что-то свое, стандартные механизмы работы с кучей не подойдут.
Лично я использую "самописную" кучу для пользовательского интерфейса - например, есть основной экран, из него можно попасть в меню, из него - в другое меню, оттуда - в настройку параметра, из нее иногда - в настройку еще одного параметра. При этом объекты уничтожаются в порядке, обратном созданию, соответственно реализация очень проста и нет фрагментации.
Go to the top of the page
 
+Quote Post
singlskv
сообщение Feb 26 2008, 10:39
Сообщение #3


дятел
*****

Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065



Цитата(Непомнящий Евгений @ Feb 26 2008, 12:29) *
..............................
Примерно это я и имел в виду.
Просто в моих задачах выгоднее статически выделять память.
А про накладные расходы по работе с кучей я имел в виду не момент выделения памяти,
там действительно все быстро в случае если ее хватает и есть непрерывный кусок нужного
размера, а вопрос по сборке мусора после произвольных выделений/освобождений памяти,
и вот там совсем все не быстро/просто.
Go to the top of the page
 
+Quote Post
SasaVitebsk
сообщение Feb 26 2008, 11:50
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521



Цитата(singlskv @ Feb 26 2008, 14:39) *
Просто в моих задачах выгоднее статически выделять память.

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

А знания, я в этом совершенно убеждён, никогда не являются лишними. Если ты знаешь, то точно можешь ответить, надо им пользоваться или нет. А если не знаешь, то не можешь и оценить.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- SasaVitebsk   Сопоставление проектов С и АСМ   Feb 17 2008, 20:18
- - _Pasha   Для меня лично есть одно НО: вот я использую мульт...   Feb 18 2008, 07:58
|- - Dog Pawlowa   Цитата(_Pasha @ Feb 18 2008, 11:58) Для м...   Feb 19 2008, 06:54
|- - _Pasha   Цитата(Dog Pawlowa @ Feb 19 2008, 09:54) ...   Feb 19 2008, 07:59
|- - Dog Pawlowa   Цитата(_Pasha @ Feb 19 2008, 11:59) Продо...   Feb 19 2008, 10:42
|- - _Pasha   Цитата(Dog Pawlowa @ Feb 19 2008, 13:42) ...   Feb 19 2008, 10:57
- - KRS   Это все не показатель. Если код на С заточить напр...   Feb 18 2008, 08:32
- - SasaVitebsk   2 _pasha. Да с наработками не хочется расставаться...   Feb 18 2008, 15:45
|- - Qwertty   Цитата(SasaVitebsk @ Feb 18 2008, 18:45) ...   Feb 18 2008, 18:33
|- - SasaVitebsk   Цитата(Qwertty @ Feb 18 2008, 22:33) Изви...   Feb 18 2008, 20:17
- - Rst7   Цитатаи использовать его фичи:#pragma inline=force...   Feb 18 2008, 16:19
- - Т.Достоевский   ИМХО. Написать С код соизмеримый с асмом можно, но...   Feb 18 2008, 23:25
|- - IgorKossak   Цитата(Т.Достоевский @ Feb 19 2008, 01:25...   Feb 19 2008, 06:37
|- - SasaVitebsk   Цитата(Т.Достоевский @ Feb 19 2008, 03:25...   Feb 19 2008, 11:42
|- - _Pasha   Цитата(SasaVitebsk @ Feb 19 2008, 14:42) ...   Feb 19 2008, 12:04
- - Igor26   ЦитатаНаписать С код соизмеримый с асмом можно, но...   Feb 19 2008, 06:45
- - Rst7   ЦитатаА вот интеретно, использовали ли Вы такие пр...   Feb 19 2008, 06:50
- - forever failure   Цитата(SasaVitebsk @ Feb 19 2008, 16:42) ...   Feb 19 2008, 13:13
|- - SasaVitebsk   Цитата(forever failure @ Feb 19 2008, 17...   Feb 19 2008, 17:00
- - _Pasha   Теперь немного о другом. Рискую утомить читателя, ...   Feb 20 2008, 08:15
|- - defunct   Цитата(_Pasha @ Feb 20 2008, 10:15) Могу ...   Feb 20 2008, 14:51
- - SasaVitebsk   Не могу сказать, что я точно понял смысл, но попро...   Feb 20 2008, 16:25
- - _Pasha   Цитата(defunct @ Feb 20 2008, 17:51) Стил...   Feb 20 2008, 18:49
|- - SasaVitebsk   Цитата(_Pasha @ Feb 20 2008, 22:49) Пробл...   Feb 20 2008, 21:06
- - _Pasha   Вот это совсем другое дело! Че-то WINAVR торм...   Feb 21 2008, 01:19
|- - AHTOXA   Цитата(_Pasha @ Feb 21 2008, 06:19) Вот э...   Feb 21 2008, 07:20
||- - _Pasha   Цитата(AHTOXA @ Feb 21 2008, 10:20) WINAV...   Feb 21 2008, 07:34
||- - defunct   Цитата(_Pasha @ Feb 21 2008, 09:34) Блин,...   Feb 21 2008, 11:52
||- - _Pasha   Вернемся к нашей баранине. "Не умеешь-научим,...   Feb 21 2008, 16:57
||- - singlskv   Цитата(_Pasha @ Feb 21 2008, 19:57) Кодvo...   Feb 21 2008, 17:49
||- - _Pasha   Цитата(singlskv @ Feb 21 2008, 20:49) Нес...   Feb 22 2008, 07:41
|- - ReAl   Цитата(_Pasha @ Feb 21 2008, 03:19) Вот э...   Feb 21 2008, 08:43
|- - singlskv   Цитата(ReAl @ Feb 21 2008, 11:43) Ну изви...   Feb 21 2008, 22:37
|- - Petka   Цитата(singlskv @ Feb 22 2008, 01:37) Воп...   Feb 22 2008, 07:25
|- - singlskv   Цитата(Petka @ Feb 22 2008, 10:25) Велоси...   Feb 22 2008, 09:45
- - _Pasha   Цитата(defunct @ Feb 21 2008, 14:52) стил...   Feb 21 2008, 19:09
- - Artak   Ребята, может бить мой вопрос покажетса смехотwорн...   Feb 21 2008, 23:25
|- - ReAl   Цитата(Artak @ Feb 22 2008, 01:25) На C п...   Feb 22 2008, 15:27
- - Rst7   ЦитатаА есть вообще грамотный способ решения таких...   Feb 22 2008, 06:29
|- - Artak   Цитата(Rst7 @ Feb 22 2008, 10:29) В IAR...   Feb 26 2008, 20:26
- - _Pasha   Теперь про асм. В контексте многопоточного програм...   Feb 22 2008, 10:47
- - _Pasha   В общем, наигрался я с "С". Память закан...   Feb 22 2008, 23:10
|- - defunct   Цитата(_Pasha @ Feb 23 2008, 01:10) В общ...   Feb 22 2008, 23:37
|- - singlskv   Цитата(_Pasha @ Feb 23 2008, 02:10) В общ...   Feb 22 2008, 23:55
|- - Alex B._   Цитата(singlskv @ Feb 23 2008, 02:55) я н...   Feb 23 2008, 00:03
||- - singlskv   Цитата(Alex B._ @ Feb 23 2008, 03:03) хм,...   Feb 23 2008, 00:08
|- - defunct   Цитата(singlskv @ Feb 23 2008, 01:55) Вот...   Feb 23 2008, 00:10
|- - singlskv   Цитата(defunct @ Feb 23 2008, 03:10) А чт...   Feb 23 2008, 00:43
|- - defunct   Цитата(singlskv @ Feb 23 2008, 02:43) Как...   Feb 23 2008, 01:10
|- - singlskv   Цитата(defunct @ Feb 23 2008, 04:10) Я ко...   Feb 24 2008, 18:47
|- - SasaVitebsk   Цитата(singlskv @ Feb 24 2008, 22:47) Ска...   Feb 24 2008, 19:50
||- - singlskv   Цитата(SasaVitebsk @ Feb 24 2008, 22:50) ...   Feb 24 2008, 22:23
||- - SasaVitebsk   Цитата(singlskv @ Feb 25 2008, 02:23) Уве...   Feb 25 2008, 13:23
|- - defunct   Цитата(singlskv @ Feb 24 2008, 20:47) Ска...   Feb 24 2008, 21:03
- - SasaVitebsk   А мне просто супер нравится С. По-моему, для МК эт...   Feb 23 2008, 00:58
- - SasaVitebsk   Из приведенного мной первого поста видно, что прои...   Feb 23 2008, 11:09
- - Rst7   ЦитатаpChan->vAverage = (pChan->vSum + 4) ...   Feb 23 2008, 20:18
|- - defunct   Цитата(Rst7 @ Feb 23 2008, 22:18) Мне дру...   Feb 24 2008, 04:54
- - Rst7   Все... Туплю. Уже и ответ пространный написал, хор...   Feb 24 2008, 10:40
- - defunct   Цитата(Непомнящий Евгений @ Feb 26 2008, 11...   Feb 26 2008, 11:21


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

 


RSS Текстовая версия Сейчас: 21st July 2025 - 16:53
Рейтинг@Mail.ru


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