⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 timer.h

📁 用于GPU通用计算的编程语言BrookGPU 0.4
💻 H
字号:
#ifndef __TIMER_H_INCLUDED__#define __TIMER_H_INCLUDED__#ifdef WIN32#include <windows.h>struct Timer  {	__int64 start;	__int64 now;	__int64 freq;	double res;	double e; 	__forceinline double fps() {		// return 1/elapsed_time for the frame rate		QueryPerformanceCounter((LARGE_INTEGER*)&now);		e = 1./((double)((now - start)*res));		QueryPerformanceCounter((LARGE_INTEGER*)&start);		return e;	}	__forceinline double elapsed_ms() { // in ms		QueryPerformanceCounter((LARGE_INTEGER*)&now);		return 1000.*(double)((now - start)*res);	}	__forceinline double elapsed_s() { // in s		QueryPerformanceCounter((LARGE_INTEGER*)&now);		return (double)((now - start)*res);	}	__forceinline double time() { // in s		QueryPerformanceCounter((LARGE_INTEGER*)&now);		return (double)(now*res);	}	__forceinline void init() { 		QueryPerformanceFrequency((LARGE_INTEGER*)&freq);		res = (double)(1./(double)freq);		QueryPerformanceCounter((LARGE_INTEGER*)&start);	}	__forceinline void reset() { 		QueryPerformanceCounter((LARGE_INTEGER*)&start);	}};#else#include <sys/time.h>#define __forceinline inlinestruct Timer  {        double uinv;        struct timeval start; 	__forceinline double fps() {		// return 1/elapsed_time for the frame rate	    struct timeval now;		gettimeofday(&now, 0);		long sec = now.tv_sec - start.tv_sec;		long usec = now.tv_usec - start.tv_usec;		double e = 1./(sec + usec*uinv);		start = now;		return e;	}	__forceinline double elapsed_ms() { // in ms	    struct timeval now;		gettimeofday(&now, 0);		long sec = now.tv_sec - start.tv_sec;		long usec = now.tv_usec - start.tv_usec;		double e = 1000. * (sec + usec*uinv);		return e;	}	__forceinline double elapsed_s() { // in s	        struct timeval now;		gettimeofday(&now, 0);		long sec = now.tv_sec - start.tv_sec;		long usec = now.tv_usec - start.tv_usec;		double e = sec + usec*uinv;		return e;	}	__forceinline double time() { // in s	    struct timeval now;		gettimeofday(&now, 0);		double e = now.tv_sec + now.tv_usec*uinv;		return e;	}	__forceinline void init() { 		uinv = 1/1000000.;	    gettimeofday(&start, 0);	}	__forceinline void reset() { 	    init();	}};#endif#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -