?? wt_tsc.c
字號:
#include "tsc.h"
#include <crblib/timer.h>
#define CPU_HZ (CPU_MHZ*1000000.0)
void printTSC(double tsc, FILE *outF)
{
fprintf(outF,"%d.%04d",(int)tsc,(int)(tsc*10000.0));
}
/** extern assembly from rdtsc.asm ***/
#ifdef PENTIUM /** use the TSC ***/
#ifdef _MSC_VER
extern void RDTSC_FUNC(ulong *a,ulong *b);
#define _RDTSC_FUNC RDTSC_FUNC
#else
extern void _RDTSC_FUNC(ulong *a,ulong *b);
#endif
static ulong TSC_H_1,TSC_L_1;
static ulong TSC_H_2,TSC_L_2;
void startTSC(void)
{
_RDTSC_FUNC(&TSC_H_1,&TSC_L_1);
}
#define msw_scale (4294967296.0/CPU_HZ)
#define lsw_scale (1.0/CPU_HZ)
double diffTSC(void)
{
_RDTSC_FUNC(&TSC_H_2,&TSC_L_2);
return (TSC_H_2 - TSC_H_1)*msw_scale +
(TSC_L_2 - TSC_L_1)*lsw_scale;
}
#else // no PENTIUM : fake it
static clock_t save_clock;
void startTSC(void) { save_clock = clock(); }
double diffTSC(void){ return ((double)(clock() - save_clock) / (double)CLOCKS_PER_SEC); }
#endif // PENTIUM
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -