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

 
 
 
Reply to this topicStart new topic
> ICC AVR и IAR, ICC AVR и IAR в размере кода
kostik2
сообщение Feb 16 2006, 11:12
Сообщение #1


Участник
*

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



Откомпилировал одну и туже прогу на IAR и ICC и получается, что
,к примеру, на IAR - 1068байт а на ICC - 764б.
Применил на IAR оптимизацию максимальную.

В принципе какой отладчик лучше генерит код.
Go to the top of the page
 
+Quote Post
defunct
сообщение Feb 16 2006, 11:30
Сообщение #2


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(kostik2 @ Feb 16 2006, 13:12) *
Откомпилировал одну и туже прогу на IAR и ICC и получается, что
,к примеру, на IAR - 1068байт а на ICC - 764б.
Применил на IAR оптимизацию максимальную.

В принципе какой отладчик лучше генерит код.


хм.. отладчики код не генерят. отладчики отлаживают ;>
Компилятор конечно же лучше у IAR.
для примера небольшой проект с вычислениями с плавающей точкой в ICC получается ~7kb, в IAR ~3kb (при оптимизации по скорости).
Go to the top of the page
 
+Quote Post
kostik2
сообщение Feb 16 2006, 12:11
Сообщение #3


Участник
*

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



НЕПРАВ. ДА. ПОПРОБОВАЛ ПО СКОРОСТИ СТАЛО 1000б.
но в ICC я оптимизацию вообще не включал.
Может скажете какие настройки и где надо сделать,
стобы код стал меньше чем в icc.
Go to the top of the page
 
+Quote Post
defunct
сообщение Feb 16 2006, 12:34
Сообщение #4


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(kostik2 @ Feb 16 2006, 14:11) *
НЕПРАВ. ДА. ПОПРОБОВАЛ ПО СКОРОСТИ СТАЛО 1000б.
но в ICC я оптимизацию вообще не включал.
Может скажете какие настройки и где надо сделать,
стобы код стал меньше чем в icc.


в ICC как таковой оптимизации вообще нет, есть только default и code compression (не сильно разнящиеся между собой) режимы сборки проекта..

В IAR размер сборки зависит от подключенных Вами библиотек, от используемой модели памяти, и от режима оптимизации (который определяется 6-ю параметрами - Optimisations->Enabled optimisations).. Также очень важно для получения минимального размера кода переключиться в режим сборки "RELEASE" в комбобоксе Workspace.

Сообщение отредактировал defunct - Feb 16 2006, 12:38
Go to the top of the page
 
+Quote Post
IgorKossak
сообщение Feb 16 2006, 13:29
Сообщение #5


Шаман
******

Группа: Модераторы
Сообщений: 3 064
Регистрация: 30-06-04
Из: Киев, Украина
Пользователь №: 221



Цитата(kostik2 @ Feb 16 2006, 14:11) *
...стобы код стал меньше чем в icc.

Довольно странная самоцель wacko.gif
Go to the top of the page
 
+Quote Post
Aleks17
сообщение Feb 16 2006, 17:36
Сообщение #6


Местный
***

Группа: Свой
Сообщений: 238
Регистрация: 17-01-05
Из: Новосибирск
Пользователь №: 2 003



Попадался как-то документ с Atmel-а по поводу реализации какой-то функции в разных компиляторах, так вот IAR рулил однозначно и по объёму и по быстродействию.
Go to the top of the page
 
+Quote Post
Old1
сообщение Feb 16 2006, 19:08
Сообщение #7


Знающий
****

Группа: Свой
Сообщений: 697
Регистрация: 26-07-05
Из: Могилев
Пользователь №: 7 095



Цитата(defunct @ Feb 16 2006, 16:34) *
Также очень важно для получения минимального размера кода переключиться в режим сборки "RELEASE" в комбобоксе Workspace.

ИМХО не так уж и важно. RELEASE - это всего лишь дополнительный профиль настройки проекта, предназначенный для облегчения работы и позволяющий запомнить настройки проекта, оптимальные для создания исполняемого кода (например: максимальная оптимизация, которая в этом профиле установлена по умолчанию), формат выходного файла .hex и т.п.).Кстати настраивается он отдельно. Ничто не мешает минимальный размер кода получить и в DEBUG.
Go to the top of the page
 
+Quote Post
defunct
сообщение Feb 16 2006, 19:38
Сообщение #8


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(Old1 @ Feb 16 2006, 21:08) *
Цитата(defunct @ Feb 16 2006, 16:34) *

Также очень важно для получения минимального размера кода переключиться в режим сборки "RELEASE" в комбобоксе Workspace.

ИМХО не так уж и важно. RELEASE - это всего лишь дополнительный профиль настройки проекта, предназначенный для облегчения работы и позволяющий запомнить настройки проекта, оптимальные для создания исполняемого кода (например: максимальная оптимизация, которая в этом профиле установлена по умолчанию), формат выходного файла .hex и т.п.).Кстати настраивается он отдельно. Ничто не мешает минимальный размер кода получить и в DEBUG.


Особо тщательно этот вопрос не рассматривал.
Просто при внутрисхемной эмуляции взависимости от сборки debug и release замечал существенное отличие в скорости исполнения, при одинаковых параметрах компиляции. Сборка "debug" работает медленнее, думаю это возможно из-за того, что в код местами добавляются команды break.. Может я и не прав.
Go to the top of the page
 
+Quote Post
IgorKossak
сообщение Feb 17 2006, 07:18
Сообщение #9


Шаман
******

Группа: Модераторы
Сообщений: 3 064
Регистрация: 30-06-04
Из: Киев, Украина
Пользователь №: 221



Цитата(defunct @ Feb 16 2006, 21:38) *
Просто при внутрисхемной эмуляции взависимости от сборки debug и release замечал существенное отличие в скорости исполнения, при одинаковых параметрах компиляции. Сборка "debug" работает медленнее, думаю это возможно из-за того, что в код местами добавляются команды break.. Может я и не прав.

Господа, поймите простую вещь.
Никакой мистики в конфигурациях debug и release нет. Отличаются они ТОЛЬКО настройками проекта, ВСЕ из которых доступны из Project/Options. Можно по желанию удалить любую из них (или даже все) или создать свою(и) с любыми названиями и настройками.
Имеющиеся конфигурации это всего лишь "фабричные заготовки".
Они настроены так, что в debug отсутствует оптимизация и выходным форматом является debug(ubrof), в release оптимизация включена (потому и работает быстрее) и выходной формат hex (для прошивки).
Могут быть и другие настройки, но никаких скрытых подоплёк.
Команды break никуда не добавляются в debug, а имеются некоторые идентификаторы, на которые реагирует C-SPY (main, _exit, ...).
Go to the top of the page
 
+Quote Post

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

 


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


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