Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.03.20;
Скачать: CL | DM;

Вниз

скока тиков отработал комп   Найти похожие ветки 

 
redlord   (2005-03-07 00:22) [0]

помню что в модуле MMSYSTEM есть вункция возвращающая тики времени которое винда отработала. а как она называется забыл, поскажите уж не сочтите за труд


 
SammIk ©   (2005-03-07 00:24) [1]

GetTickCount
rdtsc db 0fh,31h


 
Palladin ©   (2005-03-07 00:27) [2]

Замучили

unit UWRTickers;

interface
Type
TTicker=Class
 Private
  m_nFreq,
  m_nStartValue,
  m_nLastTickValue,
  m_nLastTickCount,
  m_nNowTickValue,
  m_nTickCount:Int64;
  Function lcGetLastTickTime:Extended;
  Function lcGetAllTime:Extended;
  Function lcGetAvgTickTime:Extended;
 Public
  Constructor Create;
  Procedure Reset; Virtual;
  Procedure Tick(p_nCount:Integer=1); Virtual;
  Property LastTickTime:Extended Read lcGetLastTickTime;
  Property AllTime:Extended Read lcGetAllTime;
  Property AvgTickTime:Extended Read lcGetAvgTickTime;
End;

TWindowsTicker=Class(TTicker)
 Public
  Procedure Reset; Override;
  Procedure Tick(p_nCount:Integer=1); Override;
End;

TPerfomanceCounterTicker=Class(TTicker)
 Public
  Procedure Reset; Override;
  Procedure Tick(p_nCount:Integer=1); Override;
End;

Function CreateBestTicker:TTicker;

implementation
Uses
Windows;

Procedure TTicker.Tick;
Begin
 m_nLastTickValue:=m_nNowTickValue;
 m_nLastTickCount:=m_nTickCount;
 m_nTickCount:=m_nTickCount+p_nCount;
End;

Constructor TTicker.Create;
Begin
 Reset;
End;

Procedure TTicker.Reset;
Begin
 m_nLastTickValue:=m_nStartValue;
 m_nNowTickValue:=m_nStartValue;
 m_nLastTickCount:=0;
 m_nNowTickValue:=0;
 m_nTickCount:=0;
End;

Function TTicker.lcGetLastTickTime;
Begin
 If m_nFreq=0 Then Result:=0 Else
  If m_nLastTickCount=0 Then Result:=0 Else Result:=(m_nNowTickValue-m_nLastTickValue)/m_nFreq/m_nLastTickCount;
End;

Function TTicker.lcGetAllTime;
Begin
 If m_nFreq=0 Then Result:=0
              Else Result:=(m_nNowTickValue-m_nStartValue)/m_nFreq;
End;

Function TTicker.lcGetAvgTickTime;
Begin
 If m_nFreq=0 Then Result:=0 Else
 If m_nTickCount=0 Then Result:=0 Else Result:=(m_nNowTickValue-m_nLastTickValue)/m_nFreq/m_nTickCount;
End;

Procedure TWindowsTicker.Reset;
Begin
 m_nFreq:=1000;
 m_nStartValue:=GetTickCount;
 Inherited;
End;

Procedure TWindowsTicker.Tick;
Begin
 Inherited;
 m_nNowTickValue:=GetTickCount;
End;

Procedure TPerfomanceCounterTicker.Reset;
Begin
 QueryPerformanceFrequency(m_nFreq);
 QueryPerformanceCounter(m_nStartValue);
 Inherited;
End;

Procedure TPerfomanceCounterTicker.Tick;
Begin
 Inherited;
 QueryPerformanceCounter(m_nNowTickValue);
End;

Function CreateBestTicker:TTicker;
Var
n:Int64;
Begin
If Not QueryPerformanceFrequency(n) Then Result:=TWindowsTicker.Create
                                    Else Result:=TPerfomanceCounterTicker.Create;
End;

end.


 
redlord   (2005-03-07 00:29) [3]

ok GetTickCount


 
Kolan ©   (2005-03-07 00:36) [4]


> Palladin ©   (07.03.05 00:27) [2]

Вот так всегда. Зря постил :(


> ok GetTickCount


 
Palladin ©   (2005-03-07 00:41) [5]

В общем то не зря. Есть "тихме посетители". Для себя много извелкут в приведенном выше. Есть много полезного.


 
тихий_посетитель   (2005-03-07 00:58) [6]

Да, не зря. Когда-то стояла передо мной похожая задача - не помню, как извратился. А эту ветку я уже минут 20 как сохранил - моить, понадобится.

---
Умный не должен все знать - он должен знать, где это "все" можно найти (не поручусь за дословность)



Страницы: 1 вся ветка

Текущий архив: 2005.03.20;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.038 c
1-1109783918
oleg_SYS
2005-03-02 20:18
2005.03.20
Как присвоить типу OleVariant адресс процедуры?


14-1109292242
SkyRanger
2005-02-25 03:44
2005.03.20
RSS - функция


3-1108538930
Mishenka
2005-02-16 10:28
2005.03.20
Можно ли в запросе использовать вычисляемые и LookUp поля?


4-1107500617
oleg_SYS
2005-02-04 10:03
2005.03.20
Как создать меню с помощью Win API?


1-1110272807
rolex
2005-03-08 12:06
2005.03.20
У меня вопросик... у самого не хватает логики, чтобы решить его.