|
INtime
Tech
INtime Top
ó¸®
½Ã°£ÀÇ °èÃø
INscope À¯Æ¿¸®Æ¼·Î °èÃø
ºÎ¼ÓµÇ´Â INscope À¯Æ¿¸®Æ¼¿¡¼´Â, RT½º·¹µåÀÇ µ¿ÀÛ Å¸À̹ÖÀ̳ª ó¸® ½Ã°£À» ±×·¡ÇÇÄÃÇÏ°Ô ¼öÁý·°èÃøÇÒ ¼ö
ÀÖ½À´Ï´Ù.
¹Ð¸® ¼¼ÄÁµå Á¤µµ·ÎÀÇ Ã³¸® ½Ã°£ °èÃø
¹Ð¸® ¼¼ÄÁµå Á¦µµÀÇ °èÃø¿¡´Â INtime ½Ã½ºÅÛ ÄÝ,knGetKernelTime(
)ÀÌ À¯È¿ÇÕ´Ï´Ù.ÀÌ ÄÝÀº INtime Ä¿³ÎƽÀÌ ¹ß»ýÇÒ ¶§¸¶´Ù ÀÎÅ©¸®¸ÕÆ®(increment) µÇ´Â 64 bit Ä«¿îÅÍÄ¡¸¦ ²¨³¾
¼ö ÀÖ½À´Ï´Ù. ´Ù¸¸ Ä¿³Îƽ ÁÖ±â´Â À籸¼º °¡´ÉÇϱ⠶§¹®¿¡, ÇöÀçÀÇ Ä¿³Îƽ ¼³Á¤Ä¡´ÂCopyRtSystemInfo(
)¿¡ ÀÇÇØ¼ ¹Ì¸® ¾ò½À´Ï´Ù.
SYSINFO sysinfo;
DWORD dwKtickInUsecs ,dwKtickInMsecs;
QWORD qStart, qEnd ,qDiff;
// Àú·¹º§Æ½Ä¡(¸¶ÀÌÅ©·Î ¼¼ÄÁµå ´ÜÀ§)¸¦ ÃëµæÇÕ´Ï´Ù
CopyRtSystemInfo(&sysinfo);
dwKtickInUsecs = 10000 / sysinfo.KernelTickRatio;
dwKtickInMsecs = 1000 / dwKtickInUsecs;
printf( "%dticks/ms\n" ,dwKtickInMsecs );
// ó¸® °³½Ã½Ã°¢ÀÇ Ãëµæ
knGetKernelTime( (LPKNTIME) &qStart );
ToDo( );
// ó¸® Á¾·á½Ã°¢ÀÇ Ãëµæ
knGetKernelTime( (LPKNTIME) &qEnd );
// ó¸® ½Ã°£ÀÇ »êÃâ(ms´ÜÀ§)
qDiff = (qEnd - qStart) / dwKtickInMsecs;
³ª³ëÃÊÁ¤µµ·ÎÀÇ Ã³¸® ½Ã°£ °èÃø
Pentium CPU°¡ ³»ºÎ¿¡ °¡Áö´Â 64 bitÀÇ ÆÛÆ÷¸Õ½º Ä«¿îÅÍ ·¹Áö½ºÅ͸¦ ÀÌ¿ëÇϸé, ³ª³ëÃÊÁ¤µµ·ÎÀÇ °èÃøµµ
°¡´ÉÇÕ´Ï´Ù. ÀÌ ±â´ÉÀ» ÀÌ¿ëÇϱâ À§Çؼ´Â Ç×»ó ÀÏÁ¤ÇÑ CPU Ŭ¶ôÀÌ °ø±ÞµÇ°í ÀÖ´Â °ÍÀÌ ÀüÁ¦°¡ µÇ±â À§ÇØ, SpeedStep ±â´ÉÀ» °¡Áö´Â
PentiumCPU¿¡¼´Â ¿Ã¹Ù¸¥ °èÃøÀ» ÇÒ ¼ö ¾ø½À´Ï´Ù.
// CPU Ŭ¶ô Ä«¿îÅÍÀÇ Ãëµæ(SpeedStep ±â´ÉÀÌ ÀÖ´Â CPU¿¡¼´Â ÀÌ¿ëÇÒ ¼ö ¾ø½À´Ï´Ù)
_int64 GetPentiumCounter(void)
{
_asm rdtsc
}
// CPU ¼ÓµµÀÇ °èÃø( Hz )
DWORD GetCPUSpeed(void)
{
_int64 start ,end ,def;
RtSleep( 10 );
start = GetPentiumCounter();
RtSleep( 100 );
end = GetPentiumCounter();
def = end - start ;
return( (DWORD) def * 10 );
}
// ó¸® ½Ã°£ÀÇ »êÃâ( nano second )
double CalcTime( _int64 start ,_int64 end ,double clk )
{
return ((double)(end - start) * clk);
}
/*****************************************************************************
*
* FUNCTION: main
*
*****************************************************************************/
void main(void)
{
_int64 start ,end;
DWORD cpuHz;
double clk;
// ÇöÀçÀÇ CPU ¼Óµµ
cpuHz = GetCPUSpeed();
clk = (double) 1000000000 / (double) cpuHz;
printf("CPU speed is %.1f Hz\n" ,(float) cpuHz );
printf("clk is %.10f nano second\n" ,clk );
// ó¸® ½Ã°£ÀÇ °èÃø
start = GetPentiumCounter();
ToDo();
end = GetPentiumCounter();
// ó¸® ½Ã°£ÀÇ »êÃâ·Ç¥½Ã
printf( "ó¸® ½Ã°£ = %.5f(ns) \n" ,CalcTime( start ,end ,clk ) );
}
»ùÇà ÄÚµå
Perfo.lzh
|