PDA

Просмотр полной версии : Что нибудь типа профайлера



Shiru
16.07.2005, 12:14
Такая проблема. Есть процедура с неопределённым временем выполнения (до нескольких сотен тысяч тактов). Как можно приблизительно замерить время её выполнения (допустима погрешность +-тысячу тактов)?

captain cobalt
16.07.2005, 15:00
Это лучше всего пинать эмуляторописателей, чтобы дали недокументированную инструкцию, аналогичную RDTSC архитектуры x86. :)

acidrain
16.07.2005, 18:40
Есть процедура
если это всего лишь процедура - то тогда можно на прерывания повесить счетчик, а по окончанию - получается определенное число =)

SMT
16.07.2005, 18:49
в unreal проще всего - см. строчку под дизассемблером

Shiru
17.07.2005, 01:35
в unreal проще всего - см. строчку под дизассемблером
А что она показывает, я что-то не пойму?

SMT
17.07.2005, 02:01
А что она показывает, я что-то не пойму?
то, что тебе нужно =)

Shiru
17.07.2005, 02:40
то, что тебе нужно =)
Ага, вроде начал понимать:) Пока неясно только, как замерить время выполнения именно отдельно взятой подпрограммы - наверное, сделать точки останова перед CALL'ом и после него?

SMT
17.07.2005, 15:41
Shiru: просто пройти CALL по F8

fk0
19.07.2005, 18:22
Такая проблема. Есть процедура с неопределённым временем выполнения (до нескольких сотен тысяч тактов). Как можно приблизительно замерить время её выполнения (допустима погрешность +-тысячу тактов)?

Запустить сразу после прерывания. После завершения вычислить
число тактов до начала прерывания. AFAIK ещё STS 6.x такую функцию
имел, только глючил.

Raider
21.07.2005, 02:46
Такая проблема. Есть процедура с неопределённым временем выполнения (до нескольких сотен тысяч тактов). Как можно приблизительно замерить время её выполнения (допустима погрешность +-тысячу тактов)?

Я всегда просто считал.
Потом можно сделать

HALT
LD A,#07
OUT(#FE),A
CALL PROCEDURE
LD A,#0
OUT(#FE),A

и посмотреть где примерно луч. Одно время у меня на мониторе сбоку экрана была наклеена линейка на которой были написаны тысячи тактов.