У меня есть следующий код, который необходимо перенести в Visual Studio 2008. Он вычисляет, сколько циклов процессор выполняет за микросекунду, чтобы вычислить скорость процессора:
typedef unsigned long long TProcessorClockTicks;
inline TProcessorClockTicks readProcessorTimeStamp()
{
# if defined(_ARCH_linux_24_i86) || \
defined(_ARCH_linux_26_i86) || \
defined(_ARCH_cygwin) || \
defined(_ARCH_freebsd_61_i86)
TProcessorClockTicks x;
__asm__ volatile (".byte 0x0f, 0x31" : "=A" (x));
return x / 1000;
# elif defined(_ARCH_sol2)
return (TProcessorClockTicks) ::gethrtime();
# else
# error Must define _ARCH_??? preprocessor macro to build \
this code!
# endif
}
typedef unsigned long long TProcMHz;
inline
TProcMHz
measureProcessorSpeedMHz()
{
// Get the number of the processor clock cycles in a microsecond which should
// be the processor clock speed in MHz.
::usleep(1); // Put a sleep before to ensure accurate measurement.
TProcessorClockTicks before = readProcessorTimeStamp();
::usleep(1);
TProcessorClockTicks after = readProcessorTimeStamp();
return (TProcMHz) (after - before);
}
Что такое заменадля тела readProcessorTimeStamp ()?
TProcessorClockTicks x;
__asm__ volatile (".byte 0x0f, 0x31" : "=A" (x));
return x / 1000;