Форум: "Потрепаться";
Текущий архив: 2002.04.04;
Скачать: [xml.tar.bz2];
ВнизСравнение компиляторов - часть 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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.006 c