예제 #1
0
void bench_after(void) {
	ctx_t *ctx = core_get();
	long long result;

#if OPSYS == DUINO && TIMER == HREAL
	core_get()->after = micros();
	result = (ctx->after - ctx->before);
#elif TIMER == HREAL || TIMER == HPROC || TIMER == HTHRD
	clock_gettime(CLOCK, &(ctx->after));
	result = ((long)ctx->after.tv_sec - (long)ctx->before.tv_sec) * 1000000000;
	result += (ctx->after.tv_nsec - ctx->before.tv_nsec);
#elif TIMER == ANSI
	ctx->after = clock();
	result = (ctx->after - ctx->before) * 1000000 / CLOCKS_PER_SEC;
#elif TIMER == POSIX
	gettimeofday(&(ctx->after), NULL);
	result = ((long)ctx->after.tv_sec - (long)ctx->before.tv_sec) * 1000000;
	result += (ctx->after.tv_usec - ctx->before.tv_usec);
#elif TIMER == CYCLE
	ctx->after = arch_cycles();
  	result = (ctx->after - ctx->before);
#endif

#ifdef TIMER
	ctx->total += result;
#else
	(void)result;
	(void)ctx;
#endif
}
예제 #2
0
void bench_before(void) {
#if OPSYS == DUINO && TIMER == HREAL
	core_get()->before = micros();
#elif TIMER == HREAL || TIMER == HPROC || TIMER == HTHRD
	clock_gettime(CLOCK, &(core_get()->before));
#elif TIMER == ANSI
	core_get()->before = clock();
#elif TIMER == POSIX
	gettimeofday(&(core_get()->before), NULL);
#elif TIMER == CYCLE
	core_get()->before = arch_cycles();
#endif
}
예제 #3
0
uint64 os_cycles()
{
    return arch_cycles();
}