Кто любит RISC в жизни, заходим, не стесняемся.
Ответить

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

Вс фев 13, 2022 19:52:20

Да сколько можно хрень нести? Это уже не смешно. Если бы в 2022 году один компилятор давал на ARM на 47% быстрее код, то отстающие наложили бы на себя руки.

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

Вс фев 13, 2022 20:20:43

Один и тот же код, одна и та же тактовая частота, одно и то же значение в 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 быстрее выполняет код.

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

Вс фев 13, 2022 20:45:32

Если бы ещё IAR код исполнял...

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

Вс фев 13, 2022 22:08:18

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

Хотя ладно, наигрался я, в топку.

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

Вс фев 13, 2022 22:30:16

Так так, VladislavS не верит в возможности своего компилятора,
Моего? С каких пор я в IAR Systems стал работать?

а как же тогда "легенда" об эффективности создаваемого кода iarом? Или это только легенда?
Речь о единицах процентов по сравнению с GCC. С ARM V6 я уже не уверен, надо проверять. Но не о безумных 47% же.

Может проект полностью посмотришь?
Вот мне больше делать нечего.

Может не так мерю, не так смотрю, или еще что?
Мы уже 13-ю страницу темы над твоими тестами всем аулом ржём.

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

Пн фев 14, 2022 08:40:51

VladislavS писал(а):Мы уже 13-ю страницу темы над твоими тестами всем аулом ржём.
Раз на большее вас не хватило.

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

Пн фев 14, 2022 09:48:12

Да куда уж мне. Я вообще программировать то никогда не пробовал.
СпойлерВзял первый попавшийся проект. Управление приёмо-передающим модулем АФАР с компьютера через технологическую плату. Собрал компиляторами IAR и GCC из одних исходников, с примерно одинаковыми настройками. Разница 7 долбаных байт на 4,5к кода. Ради этого заморачиваться? Да ну на. Какой код быстрее не измерял - пофиг.
ИзображениеИзображение
ppm_gcc.png
(55.27 KiB) Скачиваний: 38
ppm_iar.png
(82 KiB) Скачиваний: 37

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

Пн фев 14, 2022 10:22:01

Даже и не знаю, полностью процитировать тебя или как?
Для меня размер кода вообще на последнем месте. Для меня главное скорость.
Всем известно, что iar генерирует более оптимальный код, и не одна версия GCC еще не смогла преодолеть его.

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

Пн фев 14, 2022 10:27:36

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

Да сколько можно хрень нести?

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

Пн фев 14, 2022 15:52:45

Эх вы, спецы, особенно VladislavS, да iar мне просто заинлайнил все функции.

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

Пн фев 14, 2022 16:16:09

Кто-то запрещал сделать то же самое на GCC?

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

Пн фев 14, 2022 16:33:34

Интересно было бы кусок кода увидеть и асмовый листинг, что с ним "яр" делает. Сильно сомневаюсь, что он значительно лучше оптимизирует, чем gcc.

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

Пн фев 14, 2022 17:20:23

К сожалению, а может и к счастью, сейчас глядя на листинг не скажешь какой код выполняется быстрее. Конвейер, кэши, предвыборки, разные шины доступа к коду и данным... Тут тебе не AVR. Я недавно делал тему про то как IAR код строит, там один пример есть. И ещё раз, речь не о значительно, ни о каких 146% речи нет. Ссылка на тему.

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

Пн фев 14, 2022 18:29:41

Всем известно, что iar генерирует более оптимальный код, и не одна версия GCC еще не смогла преодолеть его.
Более оптимальный код генерирует мозг программиста.
Только именно "программиста", а не быдлокодера.

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

Пн фев 14, 2022 19:24:00

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%.

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

Пн фев 14, 2022 22:16:22

дима-тролль, притомил ты своими наездами
через провокацию хошь надыбать грамотного кода?
твои тесты убедительны только для тебя самого.

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

Вт фев 15, 2022 09:44:06

А ты, оскорблениями.
Я считаю быдлокод тот код, который развернут страниц на 15, и этот код понятен только автору.
a797945 писал(а):через провокацию хошь надыбать грамотного кода?
А почему бы и нет, что в этом плохого?
a797945 писал(а):твои тесты убедительны только для тебя самого.
Да же если и так, я для себа делаю выводы, можете не соглашаться, это ваше (относится ко всем, а не к одному человеку) право.

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

Чт фев 17, 2022 15:24:04

Помните спецы я вам говорил что мерцание сектров цифр lcd вот закоментированный буфер если я через него прописую идёт мерцание
в чём дело.Почему так.?Кто может обьяснить из котов или дюдюка?
Спойлер
Код:
//char  buf[20];
char buf1[20];


Добавлено after 41 second:
А буферов 8

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

Чт фев 17, 2022 16:46:02

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

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

Чт фев 17, 2022 18:09:38

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