Главная страница
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.03 c
9-1073572104
ZAROLF
2004-01-08 17:28
2004.05.23
RLE сжатие для TDIB


1-1083930971
Vlad1
2004-05-07 15:56
2004.05.23
run-time пакеты в Delphi8


3-1083225759
Stupid
2004-04-29 12:02
2004.05.23
Как отобрать записи из Т1 для которых нет записей в Т2?


14-1083450258
хм
2004-05-02 02:24
2004.05.23
Про Бил Гейца


3-1083132416
Mishel
2004-04-28 10:06
2004.05.23
триггер Interbase -> триггер MSSQL 2000