shithub: 9bench

ref: 7845c149a286b29dfd9f108a9dc9b976bd5975ed
dir: /bench.h/

View raw version

typedef struct BItem BItem;
typedef struct BResult BResult;
typedef struct B B;

typedef void (*BFn)(B* b);

// single benchmark function
struct BItem
{
	char *name;
	BFn fn;
};

// result of benchmarking
struct BResult
{
	int N;
	vlong ns;
	uvlong cycles;
};

// type passed to bench functions
struct B
{
	int N;
	vlong start;	/* start ns */
	vlong ns;	/* duration */
	uvlong scycles;	/* start cycles */
	uvlong ecycles;	/* end cycles */
	uvlong bcycles;	/* best cycles */
	BItem item;
};

// public api
void benchinit(void);
void bench(char *name, BFn);
void benchitems(BItem[], int);