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

 
 
4 страниц V  < 1 2 3 4 >  
Reply to this topicStart new topic
> avr-gcc и IAR, сравнение, но не холивар
_Pasha
сообщение Mar 1 2011, 06:54
Сообщение #31


;
******

Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509



Цитата(demiurg_spb @ Feb 26 2011, 20:02) *
аналогично, но у меня поменьше вышло 3424
вообще без правки исходников, лишь переписал Makefile.
***
--combine -fwhole-program
***

Это да, убийственные ключики sm.gif Только напрягает, что надо все за один пасс делать...
Go to the top of the page
 
+Quote Post
MrYuran
сообщение Mar 1 2011, 07:27
Сообщение #32


Беспросветный оптимист
******

Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646



Цитата(zhevak @ Mar 1 2011, 05:14) *
IAR по сравнению с gcc создает заметно более компактный код при минимальных усилиях со стороны программиста.

Зато, по соотношению цена/качество GCC на недосягаемой высоте sm.gif
Ну, а если надо в считанные килобайты упихивать, то может, лучше вообще от си отказаться.
Есть, например, очень компактные форт-машины.


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post
zhevak
сообщение Mar 1 2011, 08:32
Сообщение #33


Знающий
****

Группа: Свой
Сообщений: 723
Регистрация: 29-08-05
Из: Березовский
Пользователь №: 8 065



Цитата(MrYuran @ Mar 1 2011, 12:27) *
Зато, по соотношению цена/качество GCC на недосягаемой высоте sm.gif
Ну, а если надо в считанные килобайты упихивать, то может, лучше вообще от си отказаться.
Есть, например, очень компактные форт-машины.

Ну, это уже холивар, от которого я бы хотел отойти. Мне важно не поспорить, а важно найти истину -- важно знать, что и сколько я (лично я) теряю при использовании gcc. А то, что gcc распространяется бесплатно, так это итак все знают. Но сколько при этом теряется "компактности" -- одни слухи и какие-то бездоказательные утверждения. Я, так сказать, пожертвовал своим временем и своей репутацией (вывесил сушиться свои трусы на площади). Я думаю, что народ понял мой поступок, поэтому давайте по существу. Иначе мы так и будем продолжать жить эмоциями, а не фактами.

Уйти разработчику на ассемблер или на форт -- да, наверно это можно. Но хотелось бы не менять условий, хотелось сравнить два компилятора в примерно одинаковых условиях.

Если Вас, MrYuran, это хоть как-то успокоит, то знайте, что я сожалею о "проигрыше" gcc, но тем не менее, остаюсь с ним. Как я уже где-то выше говорил, я не использую Венду вообще. Поэтому у меня нет выбора. И даже если бы сидал под Вендой, то использовать пиратский IAR мне претит мое воспитание. И тут дело даже не в неотвратимости наказания за пиратство. Тут более высокие понятия. Дети будут ржать, но все же скажу -- дело в морали. Дело в ответе на тот самый главный вопрос -- а для чего мы вообще живем. Каждым человеком движет получение удовольствия. Мы все получаем удовольствие. Только один получает удовольствие от того, что имеет много денег, а другой -- от того, что много знает и много чего умеет делать. Мне нравиться второе. Плюс, я еще это положение "дожимаю" понятиям типа "жить, оставаясь в рамках морали". (Не в рамках закона, а по совести -- почувствуйте разницу!) Мне это интересно, и я от этого получаю удовольствие. А деньги -- что! Деньги -- фигня! Сколько бы их ни было, их всегда не хватает. Определитесь со своим главным вопросом, и все придет в норму. Я никого не осуждаю. Просто каждый сам отвечает на это вопрос по-своему, а как правильно -- никто не знает.

Блин. На хрена я это все написал?
Ладно. Пусть будет. Может сгодится кому еще.


--------------------
Хочешь рассмешить Бога -- расскажи ему о своих планах!
Go to the top of the page
 
+Quote Post
Nixon
сообщение Mar 1 2011, 08:58
Сообщение #34


Гуру
******

Группа: Админы
Сообщений: 2 736
Регистрация: 17-06-04
Из: Киев
Пользователь №: 48



Возможно вы просто взяли не совсем удачный проект для сравнения, слишком маленький, на котором оверхед GCC выражается в разы. Вот и получилось как в рекламных пресс-релизах. Возьмите проект посерьезнее или даже несколько, разных размеров. Это будет и позновательнее и объективнее.


--------------------
Вам помочь или не мешать?
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Mar 1 2011, 09:53
Сообщение #35


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Если я правильно помню принцип работы strcpy_P, то надо делать проще: strcpy_P(buf0, str0); Не нужно читать первые два байта строки и пытаться трактовать их как адрес. Можно более красиво (если строки уникальные и не С++): strcpy_P(buf0, PSTR(" Spectron"));

А если речь уже зашла об "оптимизируем исходник, оставляя неизменной функциональность", то как минимум в дисплее можно наэкономить отказавшись от чтения готовности, от операции %20, объединив -wrc и LCD_char(). В общем "из любой программы можно выжать еще хотя бы один байтик".


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
_Pasha
сообщение Mar 1 2011, 10:36
Сообщение #36


;
******

Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509



Цитата(Nixon @ Mar 1 2011, 11:58) *
Возьмите проект посерьезнее или даже несколько, разных размеров. Это будет и позновательнее и объективнее.

Их еще поискать надо, чтоб "чистой культуры" были, не завязанной на реализациях libc
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение Mar 1 2011, 13:02
Сообщение #37


неотягощённый злом
******

Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643



Цитата(_Pasha @ Mar 1 2011, 09:54) *
Это да, убийственные ключики sm.gif Только напрягает, что надо все за один пасс делать...

Меня не напрягает вовсе.
У меня вообще все проекты для младших AVR (до Mega162 включительно) только благодаря этому и влезают в кристалл.
Да ещё и бутлоадер....

2ТС:
Давайте потестируем на каком-нибудь опенсорсном проекте для AVR размером от 40КБ...


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post
zhevak
сообщение Mar 1 2011, 14:39
Сообщение #38


Знающий
****

Группа: Свой
Сообщений: 723
Регистрация: 29-08-05
Из: Березовский
Пользователь №: 8 065



Цитата(Nixon @ Mar 1 2011, 13:58) *
Возможно вы просто взяли не совсем удачный проект для сравнения, слишком маленький, на котором оверхед GCC выражается в разы. Вот и получилось как в рекламных пресс-релизах. Возьмите проект посерьезнее или даже несколько, разных размеров. Это будет и позновательнее и объективнее.

Да. Спасибо.
Я взял то, что смог окучить. Точнее -- почти окучил (т.е. имеются траблы, читайте ниже ответ Сергею). Ведь помимо этой работы -- переноса проекта в другую среду, сравнения и разборки чего-там можно отпилить еще, есть и основная работа. У Вас есть время? Вот и у меня так же. А на счет объективности... ну-у, небольшие проекты тоже имеют право на жизнь. А будет большой проект, и будет достаточно времени, обязательно попробую. Только ведь это... sm.gif наши желания редко согласуются с программой Всевышнего.

Цитата(Сергей Борщ @ Mar 1 2011, 14:53) *
Если я правильно помню принцип работы strcpy_P, то надо делать проще: strcpy_P(buf0, str0); Не нужно читать первые два байта строки и пытаться трактовать их как адрес. Можно более красиво (если строки уникальные и не С++): strcpy_P(buf0, PSTR(" Spectron"));

А если речь уже зашла об "оптимизируем исходник, оставляя неизменной функциональность", то как минимум в дисплее можно наэкономить отказавшись от чтения готовности, от операции %20, объединив -wrc и LCD_char(). В общем "из любой программы можно выжать еще хотя бы один байтик".

А-а, блин!!! Спасибо, Сергей!

Конечно же нужно так:
Код
  strcpy_P(buf, str4);

Все спешим, спешим...Это ж ведь уже готовые строки. Вот так и живем, не приходя в сознание!
На удивление, размер кода еще ужался, значит компилятор что-то там преобразовывал. Кому интересно, сейчас text = 3408 байт.

(Результаты последних компиляций я не проверял. Железка на полигоне. Мониторит процессы. Отключать, снимать не желательно. Второго экземпляра нет.)


--------------------
Хочешь рассмешить Бога -- расскажи ему о своих планах!
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Mar 1 2011, 14:47
Сообщение #39


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Взял проект из первого сообщения. Скомпилил со своим makefile, WinAVR 20100110, 3910 байт program, 157 data.
Переработал lcd.c (убрал чтение готовности, объединил вывод команд и символов, переписал SetXY, 4 строки): 3750 байт
hal.c: Добавил inline - 3738
app.c: Объявил uvchannel массивом, свернул в цикл обработку в procpack: - 3620
app.c: сделал обнуление uvchannel через memset : 3566
app.c: static inline procpack: 3554
app.c: static inline update_lcd: 3544
makefile: -lprintf_min: 3172
lcd.c: сделал 2 строки в SetXY: 3156
app.c: заменил sprintf на strcpy_P, sprintf_P - 3134 / 47 data
app.c: вынес из switch buf1[0] = '\0' - 3124
увеличил --param inline-call-cost до 2 - 3120.

Результат в приложении.
ой, ошибочку внес. После переделки на sprintf_P уже нельзя делать buf1[0] = '\0'; сейчас исправлю. Нет, можно. Все нормально.
Прикрепленный файл  zhevak_test_gcc.zip ( 10.25 килобайт ) Кол-во скачиваний: 88


Если однократно вызываемые функции повыностить из .c в .h и сделать их static inline - можно выиграть еще.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
MrYuran
сообщение Mar 1 2011, 15:01
Сообщение #40


Беспросветный оптимист
******

Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646



Цитата(Сергей Борщ @ Mar 1 2011, 17:47) *
Если однократно вызываемые функции повыностить из .c в .h и сделать их static inline - можно выиграть еще.

А я это первым делом предлагал сделать.
Выигрыш получился бы не только по объёму, но и по скорости.


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post
zhevak
сообщение Mar 1 2011, 17:38
Сообщение #41


Знающий
****

Группа: Свой
Сообщений: 723
Регистрация: 29-08-05
Из: Березовский
Пользователь №: 8 065



Я не понял. Что, пьянка -- продолжается что ли? (Эт-зря я уснул в слате. Рановато получилось.)

Цитата(Сергей Борщ @ Mar 1 2011, 19:47) *
Взял проект из первого сообщения...

Сергей, отличная работа!

А Вы можете теперь проделать примерно тоже самое в IAR-e?
... и за одно учесть мнение MrYuran на счет inline.


--------------------
Хочешь рассмешить Бога -- расскажи ему о своих планах!
Go to the top of the page
 
+Quote Post
zltigo
сообщение Mar 1 2011, 20:38
Сообщение #42


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



QUOTE (zhevak @ Mar 1 2011, 11:32) *
использовать пиратский IAR мне претит мое воспитание.

Вы, наверное, не поверите, но IAR можно купить. Не всегда стоит экономить на инструментах. Заодно не придется юродски коверкать названия продуктов.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
zhevak
сообщение Mar 1 2011, 22:46
Сообщение #43


Знающий
****

Группа: Свой
Сообщений: 723
Регистрация: 29-08-05
Из: Березовский
Пользователь №: 8 065



Цитата(zltigo @ Mar 2 2011, 01:38) *
Вы, наверное, не поверите, но IAR можно купить. Не всегда стоит экономить на инструментах. Заодно не придется юродски коверкать названия продуктов.

Вы, наверное, не поверите, но gcc распространяется бесплатно. Не всегда стоит покупать то, чему есть достойные альтернативы, удовлетворяющие вашим потребностям. Все это вопросы философии. Не имеет смысла спорить.

Цитата
Заодно не придется юродски коверкать названия продуктов.

Э-э... извините, вот тут я вообще ничего не понял. Это Вы про что?


--------------------
Хочешь рассмешить Бога -- расскажи ему о своих планах!
Go to the top of the page
 
+Quote Post
IgorKossak
сообщение Mar 2 2011, 09:56
Сообщение #44


Шаман
******

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



Цитата(zhevak @ Mar 2 2011, 00:46) *
Э-э... извините, вот тут я вообще ничего не понял. Это Вы про что?

Это про Венду, очевидно. И давайте замнём этот вопрос.

Модератор.
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение Mar 2 2011, 10:31
Сообщение #45


неотягощённый злом
******

Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643



Наверное можно подвести кое какие итоги.
Я бы хотел заострить внимание на том, что прежде чем пинять на тот или иной продукт стоит его изучить и поработать в нём какое-то время. И второе но не менее важное - без хорошего знания языка программирования грешить на объём прошивки как минимум неразумно (камень в огород ТС). Компиляторы нынче весьма умные (что IAR что gcc оба достойные конкуренты друг-другу), но программист - это всё же определяющий фактор. Пусть звучит банально, но зато отражает моё личное отношение к теме.


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post

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

 


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


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