Цитата(AlexandrY @ Oct 28 2015, 17:34)

Не видно чтобы там код был оптимизирован. Он же на C-и написан. Там оптимизацию еще делать и делать.
Сначала надо избавится от передачи аргументов по указателям. Лучше вообще аргументы сделать статическими переменными. Автоматные переменные тоже делаем статическими.
Потом развернуть циклы, длина фильтра известна заранее, значит убираем ее из аргументов.
Выравниваем функцию в памяти, выравниваем данные в памяти. Избавляемся от копирования коэффициентов.
Делаем функцию инлайновой.
Ну и наконец компилируем все в IAR. Получим еще с несколько десятков процентов приращения производительности.
Вот именно. Как по мне, проблема не в том, что "на С написано", а в том, что они данные под свою задачу оптимизировали. А в реальном проекте данные поступают в зависимости от способа их получения.
По поводу целочисленных фильтров - зависит от числа значащих разрядов, при обработке, от разрядности входных данных, от формы и зашумлённости входного сигнала.
Я себе делаю мат модель, имитирую входной сигнал, зашумляю его, потом дискретезирую его (имитирую АЦП) а потом прогоняю своей прогой и так вылизываю алгоритм. Порой, всё равно на реальном объекте нюансы возникают, но, тем не менее, удаётся сэкономить время на отладке в разы.
На мат моделе вылазят разные штуки, важные для понимания. Так, к примеру, столкнулся в последней задаче, что результат обработки (декодирование у меня было) сильно зависел от стабильности амплитуды полезного сигнала. Пришлось ввести АРУ. Сделал 2 варианта - программный и аппаратный. Результат практически идентичный, хотя, по идее аппаратный должен быть эффективнее, так как повышает число значащих разрядов.
И вообще. На таких задачах, как я убедился, самое главное - возможность максимально точно сымитировать входное воздествие.