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

Вниз

Сравнение компиляторов - часть 2   Найти похожие ветки 

 
VuDZ ©   (2002-02-21 17:41) [85]

вот, забыл сразу сказать: есть код, достаточно старый, который вывод нужную инфу о проце в файл. Я думаю, что портировать его под Делфи или Java будет не сложно, хотя с Java могут быть проблемы

class CCPUInfo
{
public:
CCPUInfo();
~CCPUInfo();
bool WriteTo(LPSTR szFName);
bool m_bReady;
private:
char *m_cCPUName;
DWORD m_dwCPUClock,
m_dwMemtotal,
m_dwAval;
__int64 GetCpuTick();
int GetCpuFrequency();
};

CCPUInfo::CCPUInfo()
{
m_cCPUName = new char[13];
m_bReady = false;
if (!m_cCPUName)
return;
m_bReady = true;
ZeroMemory(m_cCPUName, 13);

void * v = m_cCPUName;
_asm
{
xor eax, eax
cpuid
mov esi, v
mov [esi], ebx
mov [esi + 4], edx
mov [esi + 8], ecx
}

m_dwCPUClock = GetCpuFrequency();

MEMORYSTATUS memstat;
GlobalMemoryStatus(&memstat);
m_dwMemtotal = memstat.dwTotalPhys;
m_dwAval = memstat.dwAvailPhys;

}

CCPUInfo::~CCPUInfo()
{
if (m_bReady)
delete m_cCPUName;
}

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

int CCPUInfo::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));
}

bool CCPUInfo::WriteTo(LPSTR szFName)
{
if (szFName == NULL)
return false;

ofstream ofs((const char*)szFName);
if (ofs.is_open() == 0)
return false;

ofs << "CPU Vendor: " << m_cCPUName << endl;
ofs << "CPU Frequency: " << m_dwCPUClock / 1000000 << "\tin MHz" << endl;
ofs << "Total physical memory: " << (m_dwMemtotal / 1048576) << "\tin Mb"<< endl;
ofs << "Physical memory available: " << (m_dwAval / 1048576) << "\tin Mb" << endl;

ofs.flush();
ofs.close();

return true;
}


использование:
CCPUInfo ci;
ci.WriteTo("C:\\info.txt");

есть ещё вариант, который выводит инфу о проце - Атлон, пень и пр., о он очень большой. Можно добавить фишки на фкус, типа, имя тестер, дата, время...

C.U.



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

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

Наверх




Память: 0.48 MB
Время: 0.012 c
7-9663
DDD
2001-12-13 16:33
2002.04.04
СОМ-порт и устройство


1-9535
snoup
2002-03-23 20:15
2002.04.04
Как в определенное время запустить exe-файл (например в 10:37) написав его название


6-9595
SemFLY
2002-01-21 19:31
2002.04.04
Событие ClientSocketRead


1-9555
lipskiy
2002-03-24 00:54
2002.04.04
Надо перехватить сообщение о копировании в буфер обмена от любого приложения.


1-9448
neXt
2002-03-25 12:20
2002.04.04
Нажатый Shift при клике на MenuItem