[an error occurred while processing this directive]
|
компилер для BF дает 85 тактов (это с преамбулой link/unlink и без использования DAG-а)
руками у меня получилось 25 команд (у BF можно 4 сложения/вычитания за такт), но тактов чуть побольше (+2), так как память х[] одна. входа-выхода в функцию нет, но указатели по завершении указывают на следующий буфер (ну то есть это среднее время цикла)
я пока не проверил асм-овый вариант на правильность, но если где-то регистры перепутал, то это не изменит времени
то есть с учетом 700МГц, на этом примере получается С программа для BF дает производительность АСМа писаного профессионалом
кстати еще один аспект - быстрые алгоритмы vs архитектура процессора
собственно это быстрый алгоритм DCT (Chen factorisation) и лифтинговая схема для однозначного восстановления. если наплевать на однозначность (что вобщем то допустимо), то можно заменить умножением на матрицу D[8][8]
то есть для обоих процессоров должно быть время в цикле - 32 команды
то есть - получается, что для С55 "быстрый" алгоритм медленнее дубового умножения на матрицу
E-mail: info@telesys.ru