Initial commit.
This commit is contained in:
62
code/qcommon/timing.h
Normal file
62
code/qcommon/timing.h
Normal file
@@ -0,0 +1,62 @@
|
||||
|
||||
class timing_c
|
||||
{
|
||||
private:
|
||||
__int64 start;
|
||||
__int64 end;
|
||||
|
||||
int reset;
|
||||
public:
|
||||
timing_c(void)
|
||||
{
|
||||
}
|
||||
void Start()
|
||||
{
|
||||
const __int64 *s = &start;
|
||||
|
||||
__asm
|
||||
{
|
||||
push eax
|
||||
push ebx
|
||||
push edx
|
||||
|
||||
rdtsc
|
||||
mov ebx, s
|
||||
mov [ebx], eax
|
||||
mov [ebx + 4], edx
|
||||
|
||||
pop edx
|
||||
pop ebx
|
||||
pop eax
|
||||
}
|
||||
}
|
||||
int End()
|
||||
{
|
||||
const __int64 *e = &end;
|
||||
__int64 time;
|
||||
|
||||
__asm
|
||||
{
|
||||
push eax
|
||||
push ebx
|
||||
push edx
|
||||
|
||||
rdtsc
|
||||
mov ebx, e
|
||||
mov [ebx], eax
|
||||
mov [ebx + 4], edx
|
||||
|
||||
pop edx
|
||||
pop ebx
|
||||
pop eax
|
||||
}
|
||||
time = end - start;
|
||||
if (time < 0)
|
||||
{
|
||||
time = 0;
|
||||
}
|
||||
return((int)time);
|
||||
}
|
||||
};
|
||||
|
||||
// end
|
||||
Reference in New Issue
Block a user