Ардуино могла быть в 25 раз быстрее! Разница скорости Arduino vs. AVR vs. STM32.

Провел тест, для сравнения скорости выполнения программы на Arduino, AVR и STM32. Результаты мягко говоря удивили. Тестовая программа написанная в Atmel Studio выполнилась в 25 раз быстрее чем на Arduino, но одном и том-же процессоре.

Ардуино могла быть в 25 раз быстрее! Разница скорости Arduino vs. AVR vs. STM32. Arduino, Avr, Stm32, Stm32f103, Тест скорости, Сравнение, Видео, Длиннопост

Еще больше удивило, что AVR обогнал STM32. И дело тут не в архитектуре процессора, не в задержках вызванных ограниченной скоростью доступа к памяти программы (flash latency). Причина в медленных функциях STDPeriph. Многие действия, которые могли бы выполниться за один такт выполняются в лучшем случае за пять, так как находятся внутри функции. Если бы перед оглашением таких функций стояла директива "inline" размер кода и скорость выполнения были-бы значительно выше. После замены медленных функций на прямое обращение к регистрам скорость STM32 утроилась. В CubeMX дела обстоят еще хуже из-за усложненных обработчиков прерываний, callback функций и т.д.

Ардуино могла быть в 25 раз быстрее! Разница скорости Arduino vs. AVR vs. STM32. Arduino, Avr, Stm32, Stm32f103, Тест скорости, Сравнение, Видео, Длиннопост

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


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

Вы смотрите срез комментариев. Показать все
7
DELETED
Автор поста оценил этот комментарий
Не, ну а что поделать. Хочешь легко - ардуино. Хочешь просто - АВР. Хочешь посложнее - кубэмикс. А если припирает производительность - топчи регистры вручную, изучая тысячестраничный рефмануал.
раскрыть ветку (6)
Автор поста оценил этот комментарий

Согласен, слабаки уходят в ESP-шники, в хард борды. А тут в реальности - приезжаешь к заказчику, а у него апельсинка начальная

раскрыть ветку (5)
Автор поста оценил этот комментарий

Что за апельсинка?

раскрыть ветку (3)
Автор поста оценил этот комментарий

Одноплатный компьютер Orange PI. Имеет возможности контроллера, в первую очередь интерфейс GPIO.

раскрыть ветку (2)
Автор поста оценил этот комментарий

Это же таже малинка?  Я думал их только для игрушек пользуют.

раскрыть ветку (1)
3
Автор поста оценил этот комментарий

Да, китайский аналог Raspberry. Я жене на работе из одной такой "колхозный моноблок" сделал, засунув платку с Debian внутрь монитора. Заполнять Дневник ру и работать в Libre Office 1 гига памяти хватает. Плюс управление фрамугой через сервопривод. Ну и влажность и температура улица/помещение, само собой. Там прикол один раз был - выпускники-программисты зашли поздороваться, смотрят, а моя в консоли наяривает да еще на Линухе. У них челюсти так и отпали))

Автор поста оценил этот комментарий

Апельсинку не осилил, валяется где-то... Как для чего-то автономного кушает много, а для чего-то полноценного тормозит жестко(((

Вы смотрите срез комментариев. Чтобы написать комментарий, перейдите к общему списку