先看一段java的代码
class TemplateDemo
{
public static void main(String[] args)
{
long x=0;
GetTime gt=new GetTime();
gt.getTime();
}
}
class GetTime
{
private long startTime;
private long endTime;
private long countTime;
public void start()
{
startTime=System.currentTimeMillis();
}
public void end()
{
endTime=System.currentTimeMillis();
countTime=endTime-startTime;
System.out.println("need time:"+countTime);
}
public void getTime()
{
startTime=System.currentTimeMillis();
for(int i=0;i<100000;i++)
{
System.out.println(i);
}
endTime=System.currentTimeMillis();
System.out.println("need time in java:"+(endTime-startTime));
}
}
代码的意思应该很容易看懂,就是计算一段代码执行的时间。这里我简单计算了一个0-100000的for循环。
运行结果如下
(不要关注背景代码,那是下面要说的事情)
接着我就想,用cpp实现同样的功能会不会更快?(毕竟人家一直说cpp效率比较高),然后我就去试了试,用的windows api 的timeGetTime函数。下面贴上代码:
#include <iostream>
#include <time.h>
#include <Windows.h>
#include <mmsystem.h>
using namespace std;
class GetTime
{
public:
void getTime()
{
//startTime=time(NULL);
startTime = timeGetTime();
for (int i = 0;i<100000;i++)
{
cout << i << endl;
}
//endTime=time(NULL);
endTime = timeGetTime();
cout << "need time in cpp:" << endTime - startTime << endl;
}
private:
DWORD startTime;
DWORD endTime;
};
int main()
{
GetTime gt;
gt.getTime();
cin.get();
return 0;
}
接着我就满怀欣喜的准备运行了,我还特意编译了x64的Release版本,然后运行了,下面是结果:
接着我就傻眼了!