roboforum.ru

Технический форум по робототехнике.

время выполнения программы на AVR

время выполнения программы на AVR

toshas » 10 сен 2007, 19:07

Часто встает вопрос о скорости выполнения программы.
понятно что она однозначно связана с частотой работы чипа, и как-то совсем нетривиально с используемым компилятором, уровнем оптимизации, условия внешней среды...
но все же есть ли способы  прикинуть/посчитать сколько будет выполняться программа ?
(что-то типа таблицы соответствия "оператор - число тактов" ?)

кроме того какие наиболее удобные, точные или часто применяемые методы определения скорости уже с обратной стороны, т.е. на почти готовом устройстве.
встраивание в код замеров по таймерам, измерение осциллографом, еще что-то ?

как вы решаете эти задачи ?

спасибо!

avr123.nm.ru » 10 сен 2007, 19:38

так как вы и написали - расчет или измерение.

toshas » 10 сен 2007, 20:04

как выполнить такой расчет с достаточной точностью?

EdGull » 10 сен 2007, 20:33

Батенька вы не поверите!!! Как ни странно прочитать даташит!!! :-)))
там расписано какая команда сколько тактов занимает, правда это актуально только для ассемблера.

avr123.nm.ru » 10 сен 2007, 20:55

EdGull писал(а):Батенька вы не поверите!!! Как ни странно прочитать даташит!!! :-)))
там расписано какая команда сколько тактов занимает, правда это актуально только для ассемблера.


Вы не поверите !!! Но он спрашивал про ОПЕРАТОРЫ компилятора а не про АСМ инструкции.

EdGull » 10 сен 2007, 21:05

Ага, ассемблер это уже не компилятор значит... :-)))
И вообще зря я тут с вами болтаю, у вас у обоих города не заполненые.
Так что для меня здесь эта тема закрыта, пока не исправитесь :-)))

toshas » 10 сен 2007, 22:14

ok поправил )

-= Александр =- » 10 сен 2007, 23:02

Можно попробовать в симуляторах покрутить...  :roll:

avr123.nm.ru » 11 сен 2007, 00:18

EdGull писал(а):Ага, ассемблер это уже не компилятор значит... :-)))


А какие в асме могут быть УРОВНИ ОПТИМИЗАЦИИ ???

-= Александр =- » 11 сен 2007, 01:18

avr123.nm.ru писал(а):
EdGull писал(а):Ага, ассемблер это уже не компилятор значит... :-)))


А какие в асме могут быть УРОВНИ ОПТИМИЗАЦИИ ???


Там он только один - "оптимизация вручную"  :wink:

EdGull » 11 сен 2007, 11:14

Когда мне надо точно замерить скорость выполненя, я выставляю на ноге 1, а после завершения ставлю на ней 0. После этого цифровым осцилоскопом всё сразу видно ;-) Естественно прерывания приходится отключать.

matracc » 12 сен 2007, 22:25

Простите, но я не понял, что такое операторы компилятора...
Если задача стоит понять сколько циклов (у avr цикл это вроде бы один такт?) потребуется для выполнения ассемблерной программы - в datasheet в instruction set reference должно быть указано сколько циклов требуется на каждую отдельную команду (1, ну может 2, редко больше).
Если речь идет о программе на си - надо посмотреть ассемблерный код, в который транслируется ваша программа, при используемых опциях оптимизации, inlining и пр.
И конечно же еще есть профайлер. Если есть))
Измерять осциллографом - как минимум не точно. А иногда это вообще не представляется возможным.

EdGull » 12 сен 2007, 22:33

Измерять осциллографом - как минимум не точно

Это измерение де-факто, а по тактам де-юро. Точней чем по осцилографу не бывает!

avr123.nm.ru » 13 сен 2007, 09:42

EdGull писал(а):Когда мне надо точно замерить скорость выполненя, я выставляю на ноге 1, а после завершения ставлю на ней 0. После этого цифровым осцилоскопом всё сразу видно ;-)


По моему нужно вычесть из показаний время выполнения "сделать 1 на ноге".

avr123.nm.ru » 13 сен 2007, 09:45

EdGull писал(а):Точней чем по осцилографу не бывает!


Смотря какой осцил. Большинство аналоговых не имеют кварца вообще ! Так что точность там ни какая в сравнении с симулятором.

ИМХО самое точное измерение в симуляторе - там точность АБСОЛЮТНАЯ математически-даташитная. Такая практически будет и с обычным кварцем.


cron
Rambler\'s Top100 Mail.ru counter