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

 
 
> gcc в разы быстрее IAR. В чем может быть дело..., неужели все дело в компиллерах...
Gemm
сообщение Jun 26 2007, 08:04
Сообщение #1


Участник
*

Группа: Свой
Сообщений: 61
Регистрация: 2-08-05
Из: Коломна
Пользователь №: 7 283



Есть плата на AT91RM9200, на ней поднят стек (uIP), операционной системы нет. Программа просто получает поток данных и кладет в SDRAM.

Скомпилировали программу под ИАРом и под gcc в Линухе. Скорость работы программы, скомпиленной под gcc в 3 (три!) раза выше, чем под ИАРом. Стабильность работы стека после gcc выше. В обоих проектах включены кэши.

Это нормально, когда так отличается скорость работы одной и той же проги, скомпиленной разными компилерами? Как "ускорить" код от ИАРа? Пробовал разные оптимизации - не помогает. Что может быть не настроено в ИАРе?...
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
VslavX
сообщение Jun 26 2007, 10:10
Сообщение #2


embarrassed systems engineer
*****

Группа: Свой
Сообщений: 1 083
Регистрация: 24-10-05
Из: Осокорки
Пользователь №: 10 038



Цитата(Gemm @ Jun 26 2007, 11:04) *
Скомпилировали программу под ИАРом и под gcc в Линухе. Скорость работы программы, скомпиленной под gcc в 3 (три!) раза выше, чем под ИАРом. Стабильность работы стека после gcc выше. В обоих проектах включены кэши.

Это беспредметный разговор - версии GCC и IAR какие? Опции компиляции какие? Режимы ARM/Thumb?
IAR 4.1x имеет довольно много ошибок - в свое время регулярно на них наталкивались. Версии 4.3x значительно лучше, но один раз компилятор тоже "был пойман" на генерации не совсем требуемого кода. Текущий 4.41 вроде пока ни в чем плохом не замечен.
По опыту использования GCC 2.95, 3.1, 3.2 разных сборок под сygwin - некоторые проблемы есть, но все преодолимо, встроенный ассемблер у GCC считаю лучшим.
Очерь понравился MS EVC, но там ассемблер полностью в стиле MASM и много танцев с бубном для получения бинарника (в-основном, EVC заточен для написания приложений под WinCE).
Компилировалось несколько функций объемом 10-100 строк указанными компиляторами в режиме ARM - IAR впереди по компактности и скорости, но общие отличия действительно на уровне процентов, отнюдь не в разы.
Go to the top of the page
 
+Quote Post
Gemm
сообщение Jun 26 2007, 12:05
Сообщение #3


Участник
*

Группа: Свой
Сообщений: 61
Регистрация: 2-08-05
Из: Коломна
Пользователь №: 7 283



Цитата(zltigo @ Jun 26 2007, 13:37) *
smile.gif Сначала стабильно работающую программу напишите, потом уже рассуждайте о качестве кода компиляторов.

А с чего вы взяли, что она не стабильно работающая?

Цитата(VslavX @ Jun 26 2007, 14:10) *
Это беспредметный разговор - версии GCC и IAR какие?...

IAR 4.41A. Режим ARM. Оптимизация отключена.

Цитата(AlexandrY @ Jun 26 2007, 13:41) *
Абсурд.
Скорее всего GCC неправильно выполняет какие-то операции и вылетает из процедур...

Да нет, вроде ничего не вылетает - корректное TCP соединение, корректные пакеты (смотрим снифером). Пингуется без ошибок. Только ГЦЦшная 0.19мс, а ИАРовская 0.3мс.

Цитата(Paramedic @ Jun 26 2007, 13:14) *
Простите за любопытство, просто тоже сейчас борюсь с производлительностью AT91RM9200, но на компилятор грешить даже мысли не было (теперь есть). А Вы под отладчиком работаете или нет?

Работаем в IAR, отлаживаемся в нем же через JLink. Может и не надо грешить на компиллеры - возможно ошибка в нашем коде.


Есть подозрение, что дата кэш не включился, тк прироста в скорости не обнаружил. Включаю так:
asm("MRC p15, 0, r0, c1, c0, 0");
asm("ORR r0, r0, #0x00000004");
asm("MCR p15, 0, r0, c1, c0, 0");

Еще используем разные memcpy. Та, которая в ИАРовской библиотеке довольно медленная. Переписал свою на асме, но там траблы с выравниванием... Может кто поможет со быстрой стабильной memcpy и memset?
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jun 26 2007, 14:44
Сообщение #4


Гуру
******

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



Цитата(Gemm @ Jun 26 2007, 15:05) *
А с чего вы взяли, что она не стабильно работающая?

Да, однако, с Ваших-же слов:
Цитата
Стабильность работы стека после gcc выше.



Цитата(zhz @ Jun 26 2007, 16:05) *
я подрихтовал немного под IAR: [attachment=12140:attachment]

Да уж - глянул исходники IAR ( правда IAR 4.20 ) не ожидал такого тупого побайтового копирования увидеть.
Однозначно надо пользовать разумный вариант с пословным копированием.

Хотя в узких местах я традиционно с АРМ работаю с буферами выровненными на слово и размерами пакетов кратными слову. Затраты памяти не слишком велики а с быстродействием полегче.

P.S.
В приложении альтернативный приличный сишный вариант memcpy()

Сообщение отредактировал zltigo - Jun 26 2007, 15:19
Прикрепленные файлы
Прикрепленный файл  memcpy.rar ( 1.98 килобайт ) Кол-во скачиваний: 242
 


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Gemm   gcc в разы быстрее IAR. В чем может быть дело...   Jun 26 2007, 08:04
- - Paramedic   Цитата(Gemm @ Jun 26 2007, 12:04) Есть пл...   Jun 26 2007, 09:14
- - zltigo   Цитата(Gemm @ Jun 26 2007, 11:04) Стабиль...   Jun 26 2007, 09:37
- - AlexandrY   Абсурд. Скорее всего GCC неправильно выполняет как...   Jun 26 2007, 09:41
|- - Paramedic   Цитата(Gemm @ Jun 26 2007, 16:05) Есть по...   Jun 26 2007, 12:15
|- - VslavX   Цитата(Gemm @ Jun 26 2007, 15:05) IAR 4.4...   Jun 26 2007, 12:41
|- - Paramedic   Цитата(Gemm @ Jun 26 2007, 16:05) Только ...   Jun 26 2007, 12:49
||- - Gemm   Цитата(Paramedic @ Jun 26 2007, 16:49) Ну...   Jun 26 2007, 12:58
|- - zhz   Цитата(Gemm @ Jun 26 2007, 15:05) Еще исп...   Jun 26 2007, 13:05
- - e-yes   Могу дать уточнения по гэцэцэ, по версии IAR Gemm ...   Jun 26 2007, 11:33
- - e-yes   zltigo, читайте это так: при компиляции gcc (как A...   Jun 26 2007, 14:47
|- - zltigo   Цитата(e-yes @ Jun 26 2007, 17:47) z...   Jun 26 2007, 14:52
- - e-yes   Хорошо, как добиться работоспособности программы п...   Jun 26 2007, 15:22
|- - zltigo   Цитата(e-yes @ Jun 26 2007, 18:22) к...   Jun 26 2007, 15:32
- - e-yes   >Я не умею давать ответов на абстрактные вопрос...   Jun 26 2007, 18:42
|- - klen   парни, хватит бычится. я щас досебу gcc4.3.0-20070...   Jun 26 2007, 18:54
||- - zltigo   Цитата(klen @ Jun 26 2007, 21:54) я щас д...   Jun 26 2007, 19:31
|- - zltigo   Цитата(e-yes @ Jun 26 2007, 21:42) З...   Jun 26 2007, 19:02
- - e-yes   >Слушайте, любезный - ПРОЧИТАЙТЕ ПЕРВЫЙ ПОСТ СВ...   Jun 26 2007, 19:19


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

 


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


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