#include // Unsichereres aber genaueres Timestamp Register (RDTSC) anstelle der Windows Performance Counters nutzen //#define USE_INSECURE_RDTSC // Kein Inline-Assembler unter 64-Bit Windows. RDTSC-Variante deaktivieren #ifdef PLATFORM_X64 #ifdef USE_INSECURE_RDTSC #undef USE_INSECURE_RDTSC #endif #endif #include #define _WIN32_WINNT 0x0500 #include #include "ITAException.h" #define RDTSC_MEASUREMENT_LOOPS 1000 static bool _bInitialized = false; static double _dFrequency; #ifdef USE_INSECURE_RDTSC // RDTSC Implementierung void ITAHPT_init() { if (_bInitialized) return; // Den hochauflösenden Windows-Timer zum Ausmessen verwenden LARGE_INTEGER fPC; if (! QueryPerformanceFrequency(&fPC)) ITA_EXCEPT1(UNKNOWN, "Abfrage der Win32-Timerfrequenz fehlgeschlagen"); // Wir nehmen einen kritischen Bereich zur besseren Messung CRITICAL_SECTION cs; InitializeCriticalSection(&cs); EnterCriticalSection(&cs); // Messprinzip: Bestimmung der Frequenz über die bekannten // Kenngrößen des Windows Performance Counters LARGE_INTEGER t1, t2, t3, t4; _dFrequency = 0; for (unsigned int i=0; i