Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Система";
Текущий архив: 2002.06.24;
Скачать: [xml.tar.bz2];

Вниз

CPU   Найти похожие ветки 

 
SPeller   (2002-03-26 03:15) [0]

Как определить скорость проца ??


 
VuDZ   (2002-03-26 07:25) [1]


__declspec(naked)
__int64 GetCpuTick()
{ __asm {
rdtsc
ret
} }

int GetCpuFrequency ()
{
__int64 Frequency,
TimerCount1,
TimerCount2,
CpuCount1,
CpuCount2; if (!QueryPerformanceFrequency ((LARGE_INTEGER*) &Frequency)) return 0;

QueryPerformanceCounter ((LARGE_INTEGER*) &TimerCount1);

CpuCount1 = GetCpuTick ();
Sleep (500);
CpuCount2 = GetCpuTick ();
QueryPerformanceCounter ((LARGE_INTEGER*) &TimerCount2);
if (TimerCount1 == TimerCount2) return 0;
return (int) ((double) ((CpuCount2 - CpuCount1) * Frequency) /
(double) (TimerCount2 - TimerCount1));
}


 
SPeller   (2002-03-26 09:40) [2]

А на паскале, я в си 0.
Если не сложно.


 
Севостьянов Игорь   (2002-03-26 12:44) [3]

Есть у меня компонент CarbonSoft cxCpu2000
Сам не пробовал, но думаю рабочий - там много чего по процессорам
Не только скорость + поддержка современных процов
Могу выслать, спрашивай по мылу...вышлю (200 кил с доками)

Вот как они это делают, но для разных процов по разному

function GetCPUSpeed(ADelay: DWORD): Single;
var
t: DWORD;
mhi, mlo, nhi, nlo: LongInt;
t0, t1, chi, clo, shr32: Comp;
begin
{ This routine depends on the RTDSC instruction }
if (TestFeatureBitEx(SFS_TSC)) then begin
shr32 := 65536;
shr32 := shr32 * 65536;

t := GetTickCount;
while (t = GetTickCount) do begin end;
asm
DB 0FH
DB 031H
mov mhi, EDX
mov mlo, EAX
end;

while (GetTickCount < (t + ADelay)) do begin end;
asm
DB 0FH
DB 031H
mov nhi, EDX
mov nlo, EAX
end;

chi := mhi; if (mhi < 0) then chi := chi + shr32;
clo := mlo; if (mlo < 0) then clo := clo + shr32;

t0 := chi * shr32 + clo;

chi := nhi; if (nhi < 0) then chi := chi + shr32;
clo := nlo; if (nlo < 0) then clo := clo + shr32;

t1 := chi * shr32 + clo;

Result := ((t1 - t0) / (1E6 / (1000/ADelay)));
end else
Result := ERR_CPUIDNOTSUPPORTED;
end;



 
Фэ   (2002-03-26 21:38) [4]

// Частота в MHz

function cpugettick:int64;
asm
dw 310Fh // rdtsc
end;

function cpuGetFreq: dword; stdcall; export;
var
i1,i2,t:int64;
pr:dword;
begin
pr := GetThreadPriority(GetCurrentThread );
SetThreadPriority(GetCurrentThread,THREAD_PRIORITY_TIME_CRITICAL);
QueryPerformanceCounter( i1 );
t := cpugettick;
Sleep(SleepTime);
asm
dw 310Fh // rdtsc
sub eax, dword[t]
sbb edx, dword[t+4]
mov dword[t], eax
mov dword[t+4], edx
end;
QueryPerformanceCounter( i2 );
i2 := i2-i1;
QueryPerformanceFrequency( i1 );
i2 := i2*1000000 div i1;
Result := round(t/(i2));
SetThreadPriority(GetCurrentThread,pr);
end;



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

Форум: "Система";
Текущий архив: 2002.06.24;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.007 c
1-77328
Abu
2002-06-10 16:29
2002.06.24
Проблемы с логикой ...


4-77669
Rad
2002-04-23 19:11
2002.06.24
Сообщения COM


3-77279
Tutov Roman
2002-05-30 14:47
2002.06.24
Как узнать есть-ли вообще записи в таблице ?


4-77699
Alku
2002-04-23 12:21
2002.06.24
Подскажите как скопировать содержимое одной директории в другую ?


3-77276
Lena
2002-05-30 14:13
2002.06.24
Чтение из Blob-поля





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский