CPU Clock

15 отговора 369 прегледа
#1

CPU Clock

Daite malko info kak moga da izmeria cpuclock-a bez da ispolzwam Registri na Windows .... . .. .
Iasno mi e che w funkciata triabwa da ima 'asm ' koito se zaninawa s takiva izrodstini go molia da mi pomogne ....

Отговор
в отговор на FBl #2

Re: CPU Clock

Имаше доста яка дискусия по темата в клуб "Програмисти"... Не е зле там да поровиш, имаше супер яки моменти в нея...

чети и дишай по-леко
Отговор
в отговор на FBl #4

Re: CPU Clock

Ето ти една връзка [линк]

---
Е т'ва е живот!
Отговор
в отговор на FBl #5

Re: CPU Clock

Отиди на [линк] и пусни Search за cpu speed. Търси в Description, излизат десетина компоненти. Успех!

Mixy
Отговор
в отговор на PhantomAS #6

Eeee...

Cpu Usage != Cpu Clock speed

Отговор
в отговор на FBl #7

Gutof si!

Tova sym go pravil mnogo otdavna!
Sega za tebe, specialno, go prepravih za C++ Builder...
Ako ti trebva za Delphi malko she se pipne.
Inache beshe edno mazalo na Visual C++.
Znachi imash edin timer i edin buton.
Timera e disabled, vreme - ot 200 do 1000 ms vse stava.

LARGE_INTEGER start,stop,freq;
unsigned long i,l;
AnsiString string;
long double startHZ, stopHZ;
void __fastcall TForm1::Button1Click(TObject *Sender)
{
QueryPerformanceFrequency(&freq);
QueryPerformanceCounter(&start);
__emit__ (0x0f,0x31);
_asm
{
mov i,eax
mov l,edx
}
startHZ=i+4294967296*l;
Timer1->Enabled=true;

}
//---------------------------------------------------------------------------
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
QueryPerformanceCounter(&stop);
__emit__ (0x0f,0x31);
_asm
{
mov i,eax
mov l,edx

}
stopHZ=i+4294967296*l;
Timer1->Enabled=false;
string="Cpu speed: " + FloatToStr((stopHZ-startHZ)/((stop.QuadPart-start.QuadPart)/(long double)freq.QuadPart)/1000000.);
ShowMessage("Timer freq:" + IntToStr(freq.LowPart) + "\n" + string);

}

Отговор
в отговор на naki #8

Re: Eeee...

Sorry - ама ми се стори, че модула освен CPU usage - мери и CPU speed - или някъде го прочетох - ина4е не съм го свалял - то4но това.

---
Е т'ва е живот!
Отговор
в отговор на naki #9

Re: Gutof si!

I kakwo stawa ako ima tejak mrejovi trafik w momenta na testa ili nekoj app si e pusnal thread s po-wisok prioritet? Ili si zabrawil che si w multitasking env? Ako problema beshe tolko lesen reshim nqmashe da ima post.

Inache sporede mene trqbwa da se razbere kak raboti tool-a na VIA DMIBrawser toj pokazawa mnogo nehsta wkl skorostta na procesora shinite keshowete i prochie

------------------------------
I got a COMPILER, and I'm not afraid to use it!
Отговор
в отговор на SDR #10

Hehe, ne si prav!

Hich daje ne e taka...
Njama nikakwo znachenie mrejovia trafik, nito neshto drygo.
Waprosa e njakoga da se izpalni koda w timera, dali she e sled 200 ms (ako sme zadali 200 ms za Timera), ili sled 220 ms, njama znachenie. Aide da te wida kak she napravish uslovia, w koito tozi kod she sbarka pone s 0.1 MHZ...

Отговор
в отговор на naki #11

Hehe, ne sam prav!

Praw si che ne sam prav
toq nomer s rdtsc ne go zneh .... ma primerno ako imash mnogoprocesorna mashina i ti prehwarlqt procesa w pauzata ot edin procesor na drug togawa stawa weselo! ili ne? kakwa e razlikata w ciklite pri mnogoprocesorni sitemi?

------------------------------
I got a COMPILER, and I'm not afraid to use it!
Отговор
в отговор на SDR #12

Re: Hehe, ne sam prav!

Бе и аз съвсем случайно го научих от една книга "Архитектура и системно програмиране за Pentium базирани компютри", Иванов & Асенов `98...
А иначе за многопроцесорните системи идея си немам. Май обаче, когато процеса е еднонишков, си бачка на един процесор, но може и да е другояче, не знам... То май беха неколко вида многопроцесорни системи, така че може и от това да зависи. А за брояча на ХЦите... хъмм, ами сигурно требва да е еднакъв за 2та (4те и т.н.) процесора? Знае ли човек...

Отговор
в отговор на Mixy #13

Re: cxCPU

Всъщност, най-доброто на което попаднах е cxCPU на CarbonSoft. Чудя се само, как се справя на NT/2000/XP и може ли да се ползва напълно свободно - по-точно, разпространява се free и със сорс по условията на Mozilla Public License Version 1.1, който обаче беше твърде дълъг за моето търпение да го изчета от край докрай . Та ако някой го е пробвал, нека да драсне 2-3 реда!

Mixy
Отговор
в отговор на FBl #14

пробвайте и това ? - не знам дали/как

работи

--------------------------
function CPUSpeed: Double;
const
DelayTime = 500; // measure time in ms
var
TimerHi, TimerLo: DWORD;
PriorityClass, Priority: Integer;
begin
PriorityClass := GetPriorityClass(GetCurrentProcess);
Priority := GetThreadPriority(GetCurrentThread);
SetPriorityClass(GetCurrentProcess, REALTIME_PRIORITY_CLASS);
SetThreadPriority(GetCurrentThread, THREAD_PRIORITY_TIME_CRITICAL);

Sleep(10);

asm
dw 310Fh // rdtsc
mov TimerLo, eax
mov TimerHi, edx
end;

Sleep(DelayTime);

asm
dw 310Fh // rdtsc
sub eax, TimerLo
sbb edx, TimerHi
mov TimerLo, eax
mov TimerHi, edx
end;

SetThreadPriority(GetCurrentThread, Priority);
SetPriorityClass(GetCurrentProcess, PriorityClass);

Result := TimerLo / (1000.0 * DelayTime);
end;

---
Е т'ва е живот!
Отговор
в отговор на PhantomAS #15

Re: пробвайте и това ? - не знам дали/как

Ne raboti dobre - barka s 1 MHZ, i dava razlichni resultati pri vseko puskane - kolebanie ot 0.1 MHZ... Moq nachin e po-udachen...

Отговор
в отговор на naki #16

Re: пробвайте и това ? - не знам дали/как

Ako tvoq nachin e po-tochen, bi li go prepravil za Delphi i go postnal vuv foruma? Mersi predvaritelno, ako se naviesh :)

Отговор