[an error occurred while processing this directive]
|
Первое - про DSPlib. По моему основная проблема при использовании DSPLib из С это не то, что ВНУТРИ нее код плохо оптимизирован, а то, что надо делать вызовы подпрограмм на ее функции - в результате у компилятора отключается программная конвейеризация в том цикле, откуда вызывается функция DSPlib, и падает общая производительность программы. Конкретное сравнение - использование DSP_dotprod из DSPLib в поиске периода основного тона LPC кодера по сравнению с переписанной вручную искалкой (причем сам цикл перемножения и суммирования выдран из исходников DSPLib (!) чтоб не думать) приводит к увеличениею требуемой производительности на данный кусок программы в ПОЛТОРА раза! А это в полтора раза меньше каналов! Соответственно вывод - дополняем свою "библиотеку" функцией "найти период основного тона", а DSPLib опять мимо - только послужила местом добычи полезного куска.
Еще один пример - это mthlib (это для 67xx). Хорошая вроде штука - быстрые деления, корни, синусы, экспоненты... Но!!! Опять вызов подпрограмм все гробит. Надо-то внутри цикла (алгоритм Левинсона-Дурбина) один раз поделить. И как результат компилер опять отчекрыживает конвейеризацию, и полная задница. И опять переписывается на ассемблер - опять в своей либе появился "Левинсон-Дурбин", а mthlib осталась сбоку.
E-mail: info@telesys.ru