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 ) );
    }

 

»ùÇà ÄÚµå

filePerfo.lzh


HOME | INtime