Mit Visual Studio kann ich die Taktzykluszahl vom Prozessor wie unten gezeigt lesen. Wie mache ich das gleiche mit GCC?Taktzyklus mit GCC
#ifdef _MSC_VER // Compiler: Microsoft Visual Studio
#ifdef _M_IX86 // Processor: x86
inline uint64_t clockCycleCount()
{
uint64_t c;
__asm {
cpuid // serialize processor
rdtsc // read time stamp counter
mov dword ptr [c + 0], eax
mov dword ptr [c + 4], edx
}
return c;
}
#elif defined(_M_X64) // Processor: x64
extern "C" unsigned __int64 __rdtsc();
#pragma intrinsic(__rdtsc)
inline uint64_t clockCycleCount()
{
return __rdtsc();
}
#endif
#endif
Ja, ich brauche wirklich RDTSC, und jetzt habe ich es. Vielen Dank. – user763305
diesem Code fehlt eine Serialisierungsanweisung, so auf jedem modernen Prozessor (der nicht in der Reihenfolge ist), wird es falsche Ergebnisse liefern. normalerweise wird cpuid verwendet. – markhahn
Die 64-Bit-Version erzeugt eine schlechte Assembly mit gcc. Um es zu verbessern, verschiebe 'rdx' 32 Bits nach links und oder mit' rax' manuell. Das Ergebnis ist in 'rax'. –