[an error occurred while processing this directive]
|
в то время как космические корабли бороздят... тьфу
в современных процессорах операция умножения уже давно не является критической по времени, как правило она выполняется в N раз быстрее, чем сдвиг (N>=2)
при этом во всяких векторных блоках (MMX, SSE, Altivec и т.п.) вроде как это N>>1, к счастью или несчастью мне не доводилось программировать такие процы и я не знаю прав или лев
так же в ПЛИС-ах - практически невозможно достать нормальную ПЛИС, в которой не было бы умножителей, и тратить на сдвиги трассировочные ресурсы вместо использования умножителей - глупо
то же и с АЗИКами (VLSI, как их любят называть научные перцы) - вроде сэкономив, вентиля на умножители - получится выигрыш в площади и потреблении - но это далеко не так очевидно - умножители бывают в виде одной ячейки, которая меньшей площади (на вентилях съедает трассировка площадь - реально они достаточно неплотно на кристалле расположены) и жрет меньше (основное потребление КМОП - перезарядка емкостей - то есть трассировки)
и при использовании быстрого алгоритма - теряется регулярность и усложняется тестирование (особенно если матрица факторизуется не регулярным образом (типа FFT), а каким нибудь более извращенным)
--------------------
про конструктивизм - даещь алгоритмы в которых уменьшено количество обращений в память и [условных] переходов - самых неприятных процессорных операций в наше время
ведь должен кто-то такие алгоритмы придумывать...
может я и ошибаюсь, но заоптимизированное DCT оценивается у меня на BF не быстрее, чем в лоб (может я их готовить не умею..., если не обломаюсь писать/симулировать - еще напишу)
E-mail: info@telesys.ru