stm32 cubeide два инкремента не совместимы.

Кто любит RISC в жизни, заходим, не стесняемся.
Аватара пользователя
VladislavS
Собутыльник Кота
Сообщения: 2562
Зарегистрирован: Вт май 01, 2018 19:44:47

Re: stm32 cubeide два инкремента не совместимы.

Сообщение VladislavS »

Да сколько можно хрень нести? Это уже не смешно. Если бы в 2022 году один компилятор давал на ARM на 47% быстрее код, то отстающие наложили бы на себя руки.
Реклама
Dimon456
Мудрый кот
Сообщения: 1849
Зарегистрирован: Вс дек 25, 2016 08:34:54

Re: stm32 cubeide два инкремента не совместимы.

Сообщение Dimon456 »

Один и тот же код, одна и та же тактовая частота, одно и то же значение в USART1->BRR 0x00000682, скорость USART 19200
Спойлер

Код: Выделить всё

start-end = 129(69)		enter

CMD > start-end = 210(135)	TOGGLE

CMD > start-end = 266(187)	COUNT=4578
В скобках указаны такты iar.
На сколько я могу судить, iar быстрее выполняет код.
Реклама
Аватара пользователя
VladislavS
Собутыльник Кота
Сообщения: 2562
Зарегистрирован: Вт май 01, 2018 19:44:47

Re: stm32 cubeide два инкремента не совместимы.

Сообщение VladislavS »

Если бы ещё IAR код исполнял...
Dimon456
Мудрый кот
Сообщения: 1849
Зарегистрирован: Вс дек 25, 2016 08:34:54

Re: stm32 cubeide два инкремента не совместимы.

Сообщение Dimon456 »

Так так, VladislavS не верит в возможности своего компилятора, а как же тогда "легенда" об эффективности создаваемого кода iarом? Или это только легенда?
Может проект полностью посмотришь? Может не так мерю, не так смотрю, или еще что? Там всего две функции.

Хотя ладно, наигрался я, в топку.
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
VladislavS
Собутыльник Кота
Сообщения: 2562
Зарегистрирован: Вт май 01, 2018 19:44:47

Re: stm32 cubeide два инкремента не совместимы.

Сообщение VladislavS »

[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-ю страницу темы над твоими тестами всем аулом ржём.
Реклама
Dimon456
Мудрый кот
Сообщения: 1849
Зарегистрирован: Вс дек 25, 2016 08:34:54

Re: stm32 cubeide два инкремента не совместимы.

Сообщение Dimon456 »

VladislavS писал(а):Мы уже 13-ю страницу темы над твоими тестами всем аулом ржём.
Раз на большее вас не хватило.
Реклама
Аватара пользователя
VladislavS
Собутыльник Кота
Сообщения: 2562
Зарегистрирован: Вт май 01, 2018 19:44:47

Re: stm32 cubeide два инкремента не совместимы.

Сообщение VladislavS »

Да куда уж мне. Я вообще программировать то никогда не пробовал.
СпойлерВзял первый попавшийся проект. Управление приёмо-передающим модулем АФАР с компьютера через технологическую плату. Собрал компиляторами IAR и GCC из одних исходников, с примерно одинаковыми настройками. Разница 7 долбаных байт на 4,5к кода. Ради этого заморачиваться? Да ну на. Какой код быстрее не измерял - пофиг.
ИзображениеИзображение
ppm_gcc.png
(55.27 КБ) 95 скачиваний
ppm_iar.png
(82 КБ) 104 скачивания
Dimon456
Мудрый кот
Сообщения: 1849
Зарегистрирован: Вс дек 25, 2016 08:34:54

Re: stm32 cubeide два инкремента не совместимы.

Сообщение Dimon456 »

Даже и не знаю, полностью процитировать тебя или как?[uquote="VladislavS",url="/forum/viewtopic.php?p=4167522#p4167522"]Для меня размер кода вообще на последнем месте. Для меня главное скорость.[/uquote]Всем известно, что iar генерирует более оптимальный код, и не одна версия GCC еще не смогла преодолеть его.
tonyk
Это не хвост, это антенна
Сообщения: 1309
Зарегистрирован: Вт ноя 19, 2019 06:10:18

Re: stm32 cubeide два инкремента не совместимы.

Сообщение tonyk »

У всех компиляторов есть особенности: один лучше строит код для вычисления выражений, другой лучше отслеживает вызовы и доступ к памяти. Поэтому программа, написанная "под IAR" может быть на 5-10% меньше по размеру, чем "под Keil", и на столько же быстрей. Справедливо и обратное. Этом явствует из неоднократных тестов разных компиляторов, которые делали серьёзные дядьки из недетских контор. Ни о каких 47% речи никогда даже не шло! Даже бесплатный GCC не сильно отстаёт от коммерческих компиляторов, разница укладывается в 5-15%. Замечу, что я привожу цифры, примерно, пятилетней давности, ибо с тех пор лично мне пофиг, каким компилятором собирать свои программы. VladislavS очень верно сказал:
VladislavS писал(а): Мы уже 13-ю страницу темы над твоими тестами всем аулом ржём.

Да сколько можно хрень нести?
Dimon456
Мудрый кот
Сообщения: 1849
Зарегистрирован: Вс дек 25, 2016 08:34:54

Re: stm32 cubeide два инкремента не совместимы.

Сообщение Dimon456 »

Эх вы, спецы, особенно VladislavS, да iar мне просто заинлайнил все функции.
Аватара пользователя
VladislavS
Собутыльник Кота
Сообщения: 2562
Зарегистрирован: Вт май 01, 2018 19:44:47

Re: stm32 cubeide два инкремента не совместимы.

Сообщение VladislavS »

Кто-то запрещал сделать то же самое на GCC?
Аватара пользователя
Eddy_Em
Собутыльник Кота
Сообщения: 2516
Зарегистрирован: Пт июл 12, 2019 22:52:01
Контактная информация:

Re: stm32 cubeide два инкремента не совместимы.

Сообщение Eddy_Em »

Интересно было бы кусок кода увидеть и асмовый листинг, что с ним "яр" делает. Сильно сомневаюсь, что он значительно лучше оптимизирует, чем gcc.
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ
Аватара пользователя
VladislavS
Собутыльник Кота
Сообщения: 2562
Зарегистрирован: Вт май 01, 2018 19:44:47

Re: stm32 cubeide два инкремента не совместимы.

Сообщение VladislavS »

К сожалению, а может и к счастью, сейчас глядя на листинг не скажешь какой код выполняется быстрее. Конвейер, кэши, предвыборки, разные шины доступа к коду и данным... Тут тебе не AVR. Я недавно делал тему про то как IAR код строит, там один пример есть. И ещё раз, речь не о значительно, ни о каких 146% речи нет. Ссылка на тему.
jcxz
Мудрый кот
Сообщения: 1725
Зарегистрирован: Вт авг 15, 2017 10:51:13

Re: stm32 cubeide два инкремента не совместимы.

Сообщение jcxz »

[uquote="Dimon456",url="/forum/viewtopic.php?p=4180701#p4180701"]Всем известно, что iar генерирует более оптимальный код, и не одна версия GCC еще не смогла преодолеть его.[/uquote]Более оптимальный код генерирует мозг программиста.
Только именно "программиста", а не быдлокодера.
Dimon456
Мудрый кот
Сообщения: 1849
Зарегистрирован: Вс дек 25, 2016 08:34:54

Re: stm32 cubeide два инкремента не совместимы.

Сообщение Dimon456 »

jcxz писал(а):Только именно "программиста", а не быдлокодера.
Но не у всех же мозг программиста.
Вот тебе, для примера, одна из функций
Спойлер

Код: Выделить всё

static bool respcmp(char *s, const char  *resp)
{
	while(*resp)
		if(*resp++ != *s++) return false;
	return true;
}
если что, ей заменил библиотечную функцию strcmp
сделай из нее шедевр, если у тебя действительно мозг программиста.

Ладно, все в топку, инлайн этих двух функций показал такой результат, на gcc version 4.8.4 удалось добиться отставания на 14-19%.
Тогда как gcc version 10.3.1 показал отставание всего на 6-10%.
a797945
Мучитель микросхем
Сообщения: 446
Зарегистрирован: Вс ноя 01, 2015 09:15:16
Откуда: 69.Ржев

Re: stm32 cubeide два инкремента не совместимы.

Сообщение a797945 »

дима-тролль, притомил ты своими наездами
через провокацию хошь надыбать грамотного кода?
твои тесты убедительны только для тебя самого.
Dimon456
Мудрый кот
Сообщения: 1849
Зарегистрирован: Вс дек 25, 2016 08:34:54

Re: stm32 cubeide два инкремента не совместимы.

Сообщение Dimon456 »

А ты, оскорблениями.
Я считаю быдлокод тот код, который развернут страниц на 15, и этот код понятен только автору.
a797945 писал(а):через провокацию хошь надыбать грамотного кода?
А почему бы и нет, что в этом плохого?
a797945 писал(а):твои тесты убедительны только для тебя самого.
Да же если и так, я для себа делаю выводы, можете не соглашаться, это ваше (относится ко всем, а не к одному человеку) право.
ivan dimir
Мучитель микросхем
Сообщения: 440
Зарегистрирован: Вс дек 29, 2019 08:05:21

Re: stm32 cubeide два инкремента не совместимы.

Сообщение ivan dimir »

Помните спецы я вам говорил что мерцание сектров цифр lcd вот закоментированный буфер если я через него прописую идёт мерцание
в чём дело.Почему так.?Кто может обьяснить из котов или дюдюка?
Спойлер

Код: Выделить всё

//char  buf[20];
char buf1[20];
Добавлено after 41 second:
А буферов 8
Dimon456
Мудрый кот
Сообщения: 1849
Зарегистрирован: Вс дек 25, 2016 08:34:54

Re: stm32 cubeide два инкремента не совместимы.

Сообщение Dimon456 »

Возможно выход за пределы массива.
В большинстве случаем компилятор предупреждает, а в отладчике это было бы видно.
ivan dimir
Мучитель микросхем
Сообщения: 440
Зарегистрирован: Вс дек 29, 2019 08:05:21

Re: stm32 cubeide два инкремента не совместимы.

Сообщение ivan dimir »

Каким образом видно было?.Я не создавал массив.У меня просто куча буферов.
Ответить

Вернуться в «ARM»