Вверх ↑
Ответов: 16490
Рейтинг: 1210
#1: 2012-08-06 21:43:10 ЛС | профиль | цитата
Леонид писал(а):
Давно уже не измерял тики
А я никогда и не мерял. Есть таблица затрат тактов на конкретную операцию.
Например команда:
ADD регистр,регистр выполняется за 3 такта процессора
ADD память,регистр выполняется за 31-38 тактов процессора (в зависимости от вида адресации памяти)
Такт процессора — промежуток между двумя импульсами тактового генератора, который синхронизирует выполнение всех операций процессора.


В выложенной мной табличке слово "тик" нужно заменить на "такт процессора" (почему так написал - сам не знаю ).

В продолжение. Считаем такты процессора:
Add(MainForm,2953706,63,98)
{
Height=144
}
Add(InlineCode,8089376,189,98)
{
WorkPoints=#6:doTact|6:doStop|
EventPoints=#6:onTact|
Code=#15:unit HiAsmUnit;|12:// Autor Tad|0:|9:interface|0:|22:uses kol,Share,Debug;|0:|4:type|28: THiAsmClass = class(TDebug)|10: private|13: n,k:Int64;|9: public|20: onTact:THI_Event;|50: procedure doTact(var _Data:TData; Index:Word);|50: procedure doStop(var _Data:TData; Index:Word);|5: end;|1: |0:|14:implementation|0:|28:function GetCPUTacts: int64;|3:asm|7: RDTSC|4:end;|0:|30:procedure THiAsmClass.doTact;|5:begin|18: n:=GetCPUTacts; |4:end;|0:|30:procedure THiAsmClass.doStop;|5:begin|19: k:= GetCPUTacts-n;|23: _hi_OnEvent(onTact,k);|4:end;|4:end.|
link(onTact,5124980:doString,[])
}
Add(Hub,5848884,161,98)
{
link(onEvent1,8089376:doTact,[])
link(onEvent2,8089376:doStop,[])
}
Add(Button,11619364,112,98)
{
Left=30
Top=25
link(onClick,5848884:doEvent1,[])
}
Add(Label,10380760,294,98)
{
Left=20
Top=70
}
Add(FormatStr,5124980,238,98)
{
DataCount=1
Mask="На выполнение кодов Hub + InLine затрачено %1 тактов процессора."
link(onFString,10380760:doText,[])
}
Компилировать FPC или Delphi 7 (Delphi 4 не понимает)
У всех должно получиться около 1000 тактов при FPC и около 500 для DELPHI 7
(зависит от типа (архитектуры) процессора, а не от его тактовой частоты)

Зная тактовую частоту процессора, можно посчитать время.

карма: 22
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0