#include <stdio.h>
#include <stdint.h>
#ifdef _MSC_VER
#include <intrin.h>  // For Windows (MSVC compiler)
#else
#include <x86intrin.h>  // For GCC/Clang on x86 platforms
#endif

int main() {
    uint64_t start_time, end_time, time_diff;
    int i, loop_count = 1000000;

    // Get start time (in CPU cycles)
    start_time = __rdtsc();

    // Loop to measure
    for (i = 0; i < loop_count; i++) {
        __asm__ __volatile__("nop");  // No-operation to simulate work
    }

    // Get end time (in CPU cycles)
    end_time = __rdtsc();

    // Calculate time difference
    time_diff = end_time - start_time;

    // Print the time taken in CPU cycles
    printf("Time taken: %llu cycles\n", time_diff);

    return 0;
}