Ардуино могла быть в 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, Тест скорости, Сравнение, Видео, Длиннопост

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


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

Вы смотрите срез комментариев. Показать все
3
Автор поста оценил этот комментарий

Ну блин, вы бы еще с малиной сравнили. Там еще x100500 будет

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

Тут и ванговать не надо - одноплатники 2.0 и выше должны устроить свое маленькое "бордельеро"))

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

Неужели Малина еще тормознутее? Хотя с учетом того, что там ОС - все может быть(((

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

Малину не имел, но например Orange Pi One со скрипом, но тянет графическую оболочку lxde. Даже видосики на ютубе проигрываются почти без лагов(если не 1080)

Автор поста оценил этот комментарий
На малине ты ногодрыг выше нескольких килогерц не получишь (при использовании sysfs), и до двух мегагерц при прямом обращении к регистрам в wiringpi.
Вы смотрите срез комментариев. Чтобы написать комментарий, перейдите к общему списку