Как стать автором
Обновить

Комментарии 8

Цель этого урока — дать непрофессиональным программистам краткий обзор особенностей современного оборудования, которые нужно понимать, чтобы писать быстрый код.

да и многим «профессиональным» тоже не мешало бы прочитать…

Статья хорошая, но сейчас чудесные времена доя нищкоуровнего программирования.
Компиляторы — умные и simd инструкции подставляют сами, чередуют работу с памятью если идет обращение к ОЗУ и flash, как и банальные вещи, вроде замены деления на константу — умножением на обратное число, и т.п.
Декранч (разворот циклов) и inline — старые друзья стесненных по быстродействию программистов. Но тут тоже надо шире описывать, хоть на примере той же импульсной свертки

В том же 1995м году, когда Википедии еще не было, это называлось «декранч», демосценовый термин. Было довольно рядовое явление, как замена умножений и делений на сумму/разность логарифмов и т.п.
Я смотрю, в современном мире деление около 14 тактов, а логарифм — 24.
В логарифм и из него переводили по табличке, потому что процы того времени в логарифм не умели. И заняло бы это сейчас 1-3 такта, да и тогда около 7.
А, если надо повернуть точку в 3д пространстве, это довольно большое количество умножений и делений, порядка 9, которые чудесно заменяются сложениями и вычитаниями.
Это так, примеры из прошлого, которые иногда приходиться применять и сейчас.
Выравнивание больше не является проблемой..

В данном кейсе да, но, вообще — это очень часто хорошее поле для оптимизации, ведь чтение-запись больших массивов в оперативной памяти (например в играх) с помощью 64/128-битных команд по выровненным структурам — гораздо, гораздо быстрее.
Читал об этом в старой книге по архитектуре процессоров времен pentium III и Athlon — тогда эти наборы команд только недавно появились.

Спасибо, очень интересная статья.

Неприменимость SIMD к коду — лучший аргумент против break в циклах, а не какие-то там принципы структурного программирования.

Побалуюсь на Си с simd. Писал свое сравнение строк и памяти. Вроде бы уже получилось быстрее по скорости, чем версии из glibc, но посмотрю, что ещё можно выжать, убрав ветвления и выход из циклов.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории