C++获得毫秒级的时间差(支持Windows 和 Linux)

fatal error: windows.h: No such file or directory
我这里Windows 里面引用了 #include <windows.h> ,使用下面的方法测量函数运行时间

#include <iostream>
#include <windows.h>
using namespace std;
void timeTest()
{
	for(int i =0;i<1000;i++)
		cout<<i<<endl; 
}

int main()
{
	long start_time = GetTickCount();
  	timeTest();
	long end_time = GetTickCount();
    cout << "Running Time:" << end_time - start_time << "ms" << endl;
}


代码迁移到Linux下报错,找不到 windows.h。
于是选择使用Linux下的另外一种测量函数运行时间的方法,使用 #include <time.h>头文件,代码如下:

#include <iostream>
#include <time.h>
using namespace std;

void timeTest()
{
	for(int i =0;i<1000;i++)
		cout<<i<<endl; 
}

int main()
{
	clock_t start, ends;
	start = clock();
 	timeTest();
	ends = clock();
	cout << "Running Time: " << ends - start<<" ms" << endl;
}


以上两个方法在Windows下也都是准确的,然而到了Linux服务器下就不够精确了,于是请看下面的方法:

最终准确的函数运行时间度量方法——推荐使用: 而且下面这种方法的效率要高很多–个人实测
C++的<time.h>头文件中有time和clock可以用来计算时间,但是“#include < chrono >”中提供了更加精确的统计时间的方法。
下面的代码支持Windows 和 Linux,但是要求编译器必须支持C++11

#include <iostream>
#include <chrono>
using namespace std;
using std::chrono::high_resolution_clock;
using std::chrono::milliseconds;

void timeTest()
{
	for(int i =0;i<1000;i++)
		cout<<i<<endl; 
}

int main()
{
    high_resolution_clock::time_point beginTime = high_resolution_clock::now();
    
  	timeTest();
  
    high_resolution_clock::time_point endTime = high_resolution_clock::now();
    milliseconds timeInterval = std::chrono::duration_cast<milliseconds>(endTime - beginTime);
    cout << "Running Time:" << timeInterval.count()  << "ms" << endl;
}

最终方法感谢原作者:TheOneGIS

猜你喜欢

转载自blog.csdn.net/sinat_28442665/article/details/84136133