stm32 cubeide два инкремента не совместимы.
- VladislavS
- Собутыльник Кота
- Сообщения: 2562
- Зарегистрирован: Вт май 01, 2018 19:44:47
Re: stm32 cubeide два инкремента не совместимы.
Да сколько можно хрень нести? Это уже не смешно. Если бы в 2022 году один компилятор давал на ARM на 47% быстрее код, то отстающие наложили бы на себя руки.
- Реклама
Re: stm32 cubeide два инкремента не совместимы.
Один и тот же код, одна и та же тактовая частота, одно и то же значение в USART1->BRR 0x00000682, скорость USART 19200В скобках указаны такты iar.
На сколько я могу судить, iar быстрее выполняет код.
Спойлер
Код: Выделить всё
start-end = 129(69) enter
CMD > start-end = 210(135) TOGGLE
CMD > start-end = 266(187) COUNT=4578На сколько я могу судить, iar быстрее выполняет код.
- VladislavS
- Собутыльник Кота
- Сообщения: 2562
- Зарегистрирован: Вт май 01, 2018 19:44:47
Re: stm32 cubeide два инкремента не совместимы.
Если бы ещё IAR код исполнял...
Re: stm32 cubeide два инкремента не совместимы.
Так так, VladislavS не верит в возможности своего компилятора, а как же тогда "легенда" об эффективности создаваемого кода iarом? Или это только легенда?
Может проект полностью посмотришь? Может не так мерю, не так смотрю, или еще что? Там всего две функции.
Хотя ладно, наигрался я, в топку.
Может проект полностью посмотришь? Может не так мерю, не так смотрю, или еще что? Там всего две функции.
Хотя ладно, наигрался я, в топку.
- VladislavS
- Собутыльник Кота
- Сообщения: 2562
- Зарегистрирован: Вт май 01, 2018 19:44:47
Re: stm32 cubeide два инкремента не совместимы.
[uquote="Dimon456",url="/forum/viewtopic.php?p=4180515#p4180515"]Так так, VladislavS не верит в возможности своего компилятора,[/uquote]Моего? С каких пор я в IAR Systems стал работать?
[uquote="Dimon456",url="/forum/viewtopic.php?p=4180515#p4180515"]а как же тогда "легенда" об эффективности создаваемого кода iarом? Или это только легенда?[/uquote]Речь о единицах процентов по сравнению с GCC. С ARM V6 я уже не уверен, надо проверять. Но не о безумных 47% же.
[uquote="Dimon456",url="/forum/viewtopic.php?p=4180515#p4180515"]Может проект полностью посмотришь?[/uquote]Вот мне больше делать нечего.
[uquote="Dimon456",url="/forum/viewtopic.php?p=4180515#p4180515"]Может не так мерю, не так смотрю, или еще что?[/uquote]Мы уже 13-ю страницу темы над твоими тестами всем аулом ржём.
[uquote="Dimon456",url="/forum/viewtopic.php?p=4180515#p4180515"]а как же тогда "легенда" об эффективности создаваемого кода iarом? Или это только легенда?[/uquote]Речь о единицах процентов по сравнению с GCC. С ARM V6 я уже не уверен, надо проверять. Но не о безумных 47% же.
[uquote="Dimon456",url="/forum/viewtopic.php?p=4180515#p4180515"]Может проект полностью посмотришь?[/uquote]Вот мне больше делать нечего.
[uquote="Dimon456",url="/forum/viewtopic.php?p=4180515#p4180515"]Может не так мерю, не так смотрю, или еще что?[/uquote]Мы уже 13-ю страницу темы над твоими тестами всем аулом ржём.
- Реклама
Re: stm32 cubeide два инкремента не совместимы.
Раз на большее вас не хватило.VladislavS писал(а):Мы уже 13-ю страницу темы над твоими тестами всем аулом ржём.
- VladislavS
- Собутыльник Кота
- Сообщения: 2562
- Зарегистрирован: Вт май 01, 2018 19:44:47
Re: stm32 cubeide два инкремента не совместимы.
Да куда уж мне. Я вообще программировать то никогда не пробовал.


Спойлер
Взял первый попавшийся проект. Управление приёмо-передающим модулем АФАР с компьютера через технологическую плату. Собрал компиляторами IAR и GCC из одних исходников, с примерно одинаковыми настройками. Разница 7 долбаных байт на 4,5к кода. Ради этого заморачиваться? Да ну на. Какой код быстрее не измерял - пофиг.Re: stm32 cubeide два инкремента не совместимы.
Даже и не знаю, полностью процитировать тебя или как?[uquote="VladislavS",url="/forum/viewtopic.php?p=4167522#p4167522"]Для меня размер кода вообще на последнем месте. Для меня главное скорость.[/uquote]Всем известно, что iar генерирует более оптимальный код, и не одна версия GCC еще не смогла преодолеть его.
Re: stm32 cubeide два инкремента не совместимы.
У всех компиляторов есть особенности: один лучше строит код для вычисления выражений, другой лучше отслеживает вызовы и доступ к памяти. Поэтому программа, написанная "под IAR" может быть на 5-10% меньше по размеру, чем "под Keil", и на столько же быстрей. Справедливо и обратное. Этом явствует из неоднократных тестов разных компиляторов, которые делали серьёзные дядьки из недетских контор. Ни о каких 47% речи никогда даже не шло! Даже бесплатный GCC не сильно отстаёт от коммерческих компиляторов, разница укладывается в 5-15%. Замечу, что я привожу цифры, примерно, пятилетней давности, ибо с тех пор лично мне пофиг, каким компилятором собирать свои программы. VladislavS очень верно сказал:
VladislavS писал(а): Мы уже 13-ю страницу темы над твоими тестами всем аулом ржём.
Да сколько можно хрень нести?
Re: stm32 cubeide два инкремента не совместимы.
Эх вы, спецы, особенно VladislavS, да iar мне просто заинлайнил все функции.
- VladislavS
- Собутыльник Кота
- Сообщения: 2562
- Зарегистрирован: Вт май 01, 2018 19:44:47
Re: stm32 cubeide два инкремента не совместимы.
Кто-то запрещал сделать то же самое на GCC?
- Eddy_Em
- Собутыльник Кота
- Сообщения: 2516
- Зарегистрирован: Пт июл 12, 2019 22:52:01
- Контактная информация:
Re: stm32 cubeide два инкремента не совместимы.
Интересно было бы кусок кода увидеть и асмовый листинг, что с ним "яр" делает. Сильно сомневаюсь, что он значительно лучше оптимизирует, чем gcc.
- VladislavS
- Собутыльник Кота
- Сообщения: 2562
- Зарегистрирован: Вт май 01, 2018 19:44:47
Re: stm32 cubeide два инкремента не совместимы.
К сожалению, а может и к счастью, сейчас глядя на листинг не скажешь какой код выполняется быстрее. Конвейер, кэши, предвыборки, разные шины доступа к коду и данным... Тут тебе не AVR. Я недавно делал тему про то как IAR код строит, там один пример есть. И ещё раз, речь не о значительно, ни о каких 146% речи нет. Ссылка на тему.
Re: stm32 cubeide два инкремента не совместимы.
[uquote="Dimon456",url="/forum/viewtopic.php?p=4180701#p4180701"]Всем известно, что iar генерирует более оптимальный код, и не одна версия GCC еще не смогла преодолеть его.[/uquote]Более оптимальный код генерирует мозг программиста.
Только именно "программиста", а не быдлокодера.
Только именно "программиста", а не быдлокодера.
Re: stm32 cubeide два инкремента не совместимы.
Но не у всех же мозг программиста.jcxz писал(а):Только именно "программиста", а не быдлокодера.
Вот тебе, для примера, одна из функций
Спойлер
Код: Выделить всё
static bool respcmp(char *s, const char *resp)
{
while(*resp)
if(*resp++ != *s++) return false;
return true;
}Ладно, все в топку, инлайн этих двух функций показал такой результат, на gcc version 4.8.4 удалось добиться отставания на 14-19%.
Тогда как gcc version 10.3.1 показал отставание всего на 6-10%.
Re: stm32 cubeide два инкремента не совместимы.
дима-тролль, притомил ты своими наездами
через провокацию хошь надыбать грамотного кода?
твои тесты убедительны только для тебя самого.
через провокацию хошь надыбать грамотного кода?
твои тесты убедительны только для тебя самого.
Re: stm32 cubeide два инкремента не совместимы.
А ты, оскорблениями.
Я считаю быдлокод тот код, который развернут страниц на 15, и этот код понятен только автору.
Я считаю быдлокод тот код, который развернут страниц на 15, и этот код понятен только автору.
А почему бы и нет, что в этом плохого?a797945 писал(а):через провокацию хошь надыбать грамотного кода?
Да же если и так, я для себа делаю выводы, можете не соглашаться, это ваше (относится ко всем, а не к одному человеку) право.a797945 писал(а):твои тесты убедительны только для тебя самого.
-
ivan dimir
- Мучитель микросхем
- Сообщения: 440
- Зарегистрирован: Вс дек 29, 2019 08:05:21
Re: stm32 cubeide два инкремента не совместимы.
Помните спецы я вам говорил что мерцание сектров цифр lcd вот закоментированный буфер если я через него прописую идёт мерцание
в чём дело.Почему так.?Кто может обьяснить из котов или дюдюка?
Добавлено after 41 second:
А буферов 8
в чём дело.Почему так.?Кто может обьяснить из котов или дюдюка?
Спойлер
Код: Выделить всё
//char buf[20];
char buf1[20];А буферов 8
Re: stm32 cubeide два инкремента не совместимы.
Возможно выход за пределы массива.
В большинстве случаем компилятор предупреждает, а в отладчике это было бы видно.
В большинстве случаем компилятор предупреждает, а в отладчике это было бы видно.
-
ivan dimir
- Мучитель микросхем
- Сообщения: 440
- Зарегистрирован: Вс дек 29, 2019 08:05:21
Re: stm32 cubeide два инкремента не совместимы.
Каким образом видно было?.Я не создавал массив.У меня просто куча буферов.


