Newer
Older
cycle_counter / cycle_counter.c
@yamakuro yamakuro on 26 Feb 2023 473 bytes First commit
#include <stdio.h>

typedef unsigned int uint32_t;
typedef unsigned long int uint64_t;

// x86_64
static inline uint64_t cycle_counter(void) {
    uint32_t eax, edx;
    __asm__ __volatile__("rdtscp" : "=a"(eax), "=d"(edx)::"%ecx");
    return (((uint64_t) edx) << 32) | eax;
}

int main()
{
	int tmp = 0;
	uint64_t start, end;
	int i = 0;

	for (i = 0; i < 10; i++) {
		start = cycle_counter();
		tmp = 1 + 1;
		end =cycle_counter();

		printf("%ld\n", end - start);
	}
}