CPU Clock
15 отговора
369 прегледа
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 ....
Iasno mi e che w funkciata triabwa da ima 'asm ' koito se zaninawa s takiva izrodstini go molia da mi pomogne ....
Re: CPU Clock
Имаше доста яка дискусия по темата в клуб "Програмисти"... Не е зле там да поровиш, имаше супер яки моменти в нея...
чети и дишай по-леко
чети и дишай по-леко
Re: CPU Clock
Отиди на [линк] и пусни Search за cpu speed. Търси в Description, излизат десетина компоненти. Успех!
Mixy
Mixy
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);
}
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);
}
Re: Eeee...
Sorry - ама ми се стори, че модула освен CPU usage - мери и CPU speed - или някъде го прочетох - ина4е не съм го свалял - то4но това.
---
Е т'ва е живот!
---
Е т'ва е живот!
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!
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!
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...
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...
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!
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!
Re: Hehe, ne sam prav!
Бе и аз съвсем случайно го научих от една книга "Архитектура и системно програмиране за Pentium базирани компютри", Иванов & Асенов `98...
А иначе за многопроцесорните системи идея си немам. Май обаче, когато процеса е еднонишков, си бачка на един процесор, но може и да е другояче, не знам... То май беха неколко вида многопроцесорни системи, така че може и от това да зависи. А за брояча на ХЦите... хъмм, ами сигурно требва да е еднакъв за 2та (4те и т.н.) процесора? Знае ли човек...
А иначе за многопроцесорните системи идея си немам. Май обаче, когато процеса е еднонишков, си бачка на един процесор, но може и да е другояче, не знам... То май беха неколко вида многопроцесорни системи, така че може и от това да зависи. А за брояча на ХЦите... хъмм, ами сигурно требва да е еднакъв за 2та (4те и т.н.) процесора? Знае ли човек...
Re: cxCPU
Всъщност, най-доброто на което попаднах е cxCPU на CarbonSoft. Чудя се само, как се справя на NT/2000/XP и може ли да се ползва напълно свободно - по-точно, разпространява се free и със сорс по условията на Mozilla Public License Version 1.1, който обаче беше твърде дълъг за моето търпение да го изчета от край докрай
. Та ако някой го е пробвал, нека да драсне 2-3 реда! 
Mixy
Mixy
пробвайте и това ? - не знам дали/как
работи
--------------------------
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;
---
Е т'ва е живот!
--------------------------
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;
---
Е т'ва е живот!
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...
Re: пробвайте и това ? - не знам дали/как
Ako tvoq nachin e po-tochen, bi li go prepravil za Delphi i go postnal vuv foruma? Mersi predvaritelno, ako se naviesh :)