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

📄 benchmarker.cpp

📁 非常好的数学公式计算源代码
💻 CPP
字号:
#include "Benchmarker.h"
#include <windows.h>

bool Benchmarker::bench(unsigned int minLoops, unsigned int &loops, unsigned int &elapsed)
{
	loops = minLoops;
	unsigned int t;		
	DWORD begin, end;
	elapsed = 0;
	DWORD lastElapsed = 0;


	DWORD minElapsed = 150;

	beforeBench();

	// find the minimum number of loops needed to be able to measure elapsed time accurately
	do
	{
		lastElapsed = elapsed;			

		begin = GetTickCount();				
		
		for( t=0; t<loops; t++ )
		{			
			doWork();
		}		
		
		end = GetTickCount();
		
		elapsed = end-begin;

		if( elapsed < minElapsed )
		{
			loops *= 2;
		}			
	
	}while( elapsed < minElapsed);

	
	
	// now average...
	
	unsigned int i;
	unsigned int nbAvgs = 3;
	for( i=0; i<nbAvgs; i++ )
	{
		begin = GetTickCount();	

		for( t=0; t<loops; t++ )
		{			
			doWork();
		}	

		end = GetTickCount();
		
		elapsed += end-begin;
	}


	
	elapsed /= (nbAvgs+1);

	/*

	// validation...
	unsigned int loops2 = (unsigned int)(((double)loops) * 1.5);
	unsigned int elapsed2 = 0;

	for( i=0; i<nbAvgs; i++ )
	{
		begin = GetTickCount();	

		for( t=0; t<loops2; t++ )
		{			
			doWork();
		}	

		end = GetTickCount();
		
		elapsed2 += end-begin;
	}

	elapsed2 /= nbAvgs;
	elapsed2 = (unsigned int)(((double)elapsed2) / 1.5);

	if( abs(elapsed2 - elapsed) < (0.1*elapsed) )
	{
		elapsed = (elapsed2 + elapsed) / 2;
		return true;
	}
	else
	{
		return false;
	}
	*/

	return true;

}

⌨️ 快捷键说明

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