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

Вниз

Снова о времени загрузки винды.   Найти похожие ветки 

 
Layner ©   (2004-04-14 10:55) [0]

Получаю время GetTickCount, но это только до 49 суток, а потом снова с нуля, но как тогда WIn2000 показывает, что работает например 100 дней? Т.е. в этом случае есть наверняка ключь в реестре, где говорится сколько переиодов по 49 дней открыта винда? Если кто сталкивался с этим вопросом, подскажите плз.!


 
VMcL ©   (2004-04-14 11:24) [1]

asm
 RDTSC
end;

?


 
Layner ©   (2004-04-14 15:59) [2]

мастера, подскажите 2й момент, написал такой код с подачи VMcL (Спасибо!)

function GetCPUCount:int64; assembler;
asm
 db 0fh,31h
end;


procedure TForm1.Timer1Timer(Sender: TObject);
var
d,H,M,Sec : integer;
tm : integer;
begin
 Tm:=Round(GetCPUCount/1800000000); //моя частота проца, 1,8гиг
  d:=Trunc(Tm/86400);
 Tm:=Tm-d*86400;
  H:=Trunc(Tm/3600);
 Tm:=Tm-H*3600;
  M:=Trunc(Tm/60);
 Tm:=Tm-M*60;
  Sec:=Trunc(Tm/1);

 Edit1.Text:=IntToStr(d)+" "+IntToStr(h)+" "+IntToStr(m)+" "+IntToStr(Sec);
end;


Но есть расхождение с реальными часами, т.е. если машина работает 55 дней, 10 часов, то мой код кажет на 6 часов меньше. Может реальную частоту как то можно точно выставить, а не так, как я сейчас делаю, наугад...(1,8гиг, +,-, 2-3 килогерца)


 
Layner ©   (2004-04-14 16:13) [3]

ПРоверил, реальная частота, судя по программе Cpu-Z 1817,9 мегагерц, а как точно бы, из Delphi ее узнать :(


 
VMcL ©   (2004-04-14 16:14) [4]

Точно 1,8? Может, например, Athlon XP 1.8?

Сделай универсально, а не только для твоего компа. Сначала с помощью RDSTC + QueryPerformanceCounter() + QueryPerformanceFrequency() замерь частоту CPU, потом используй.


 
VMcL ©   (2004-04-14 16:16) [5]

И еще нюанс. RDSTC считает от запуска процессора, а не ОС.


 
Layner ©   (2004-04-14 16:21) [6]

А, понял, но запуск ОС, почти что запуск PC для меня, т.е. +-3 минуты на страшно, а за замер частоты с помощью этих ф-й, спасибо, воспользуюсь!


 
VMcL ©   (2004-04-14 16:28) [7]

>>Layner ©  (14.04.04 16:21) [6]

В теории, функции QueryPerformance*() могут не поддерживаться текущим железом. В таком случае для определения частоты CPU воспользуйся GetTickCount - не так точно, но всё равно неплохо.


 
Layner ©   (2004-04-14 16:36) [8]

Так то так, но GetTickCount до 49 дней инфу держит, а потом обнуляется.. Кстати, скорость вычислил до герца, точность времени почти совпадает.


 
VMcL ©   (2004-04-15 12:52) [9]

>>Layner ©  (14.04.04 16:36) [8]

>Так то так, но GetTickCount до 49 дней инфу держит, а потом обнуляется
Для подсчета тактовой частоты CPU этого хватит. А дальше уже используй RDTSC.



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

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

Наверх




Память: 0.48 MB
Время: 0.028 c
1-1083736815
magician
2004-05-05 10:00
2004.05.23
Что Не Так.textout(b.handle,10,20, hello Word ,30)


8-1078534226
gyry-9
2004-03-06 03:50
2004.05.23
TMediaPlayer


3-1083065102
Homer
2004-04-27 15:25
2004.05.23
OnGetText динамически ?


11-1057565898
mox
2003-07-07 12:18
2004.05.23
NMSMTP


7-1082036240
VasRog
2004-04-15 17:37
2004.05.23
API: ScrollDC