shithub: 9bench

ref: 3f899338e54ae7ed97d980838a0c40e350718405
dir: /bench.h/

View raw version
#pragma lib	"libbench.a"
#pragma src	"/sys/src/libbench"

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);