[an error occurred while processing this directive]
|
Не могу разобраться с измерением быстродействия алгоритма в Code Composer Studio (программирую под TMS6713). Меню Profiler имеет 2 различных инструмента - Clock, который можно View, и окно после Start new session.
Пытался разобраться следующим образом - собрал небольшой проект из нескольких сишных файлов, вывел в окне профилинга информацию по всем функциям проекта. Параллельно смотрел на Clock. Думал, что по идее значение в Clock равно сумме значений Inclusive Total для всех функций из окна. Значения разные, хотя и находятся в одном порядке величин. Это если стопорить Clock брейкпоинтом на последней фигурной скобке функции main. А если не стопорить, то выполняется еще какой-то код после окончания функции main. Вот это значение Clock уже сильнее отличается от суммарного значения Inclusive по всем функциям.
Собрал тот же проект с конфигурацией биоса (в предыдущем случае работал без конфигурационного файла биоса - просто собрал исходники, добавил rts6701.lib и простенький командный файл линковщика) - получил в несколько раз большее число затраченных циклов CPU. Ни фига ж себе, биос, блин, ради возможности через окошко руководить тредами и прерываниями в несколько раз возрос затраченный ресурс. Но весь этот доп. ресурс концентировался в несколько раз вписанной в таблицу функции ASM$(). В документации смотрел - не нашел. Ладно, как и в прошлом случае более менее одного порядка получается показание Clock по брейкпоинту и суммы Inclusive.
А в третьем эксперименте собрал другой проект, в котором помимо сишных файлов был один на асме. И вот тут пошло-поехало. Во-первых, показания Clock оказались больше, хотя этот второй проект - это тот же первый, но с переписанной на асме одной функцией. И явно валится весь ресурс на эту непомерную функцию ASM$(). А с окном профилинга вообще туфтень какая-то. Делаешь ресет измеряешь - одно показание в эту фкнцию ASM$() идет. Ресетишь, измеряешь заново, вместо того, чтобы как в норальном случае переписывать это показание и давать тот же результат, но прибавляет к нему! То есть с каждым последующим измерением показание в окне Inclusive ASM$() растет.
Вот мои соображения:
Clock действительно должен примерно совпадать с суммарным значением Inclusive.
ASM$() - это аппарат профилинга, который тоже считается наравне с рабочим кодом.
Почему он дичает и начинает суммироваться в проекте с асмовым файлом, я не понял.
Непонятно, что за код исполняется после закрывающей скобки mainовой функции.
Как вообще это все грамотно использовать для профилинга проектов?! - главный вопрос.
Поделитесь, пожалуйста, вашими соображениями, направьте к конкретной документации, где это может быть описано (в хелпе по CCS и в pdfах ничего путного не нашел).
E-mail: info@telesys.ru