16,550
社区成员
发帖
与我相关
我的任务
分享
#include "stdafx.h"
#include<Windows.h>
#include<exception>
using namespace std;
LARGE_INTEGER Frequency,PerformanceCount1,PerformanceCount2;
void fTime0(){ QueryPerformanceFrequency(&Frequency); }
void fTime1(){
QueryPerformanceCounter(&PerformanceCount1);
}
void fTime2(){
QueryPerformanceCounter(&PerformanceCount2);
int tdiff=static_cast<int>((
((PerformanceCount2.QuadPart - PerformanceCount1.QuadPart) * 1000)/Frequency.QuadPart));
printf("%d,",tdiff);
}
struct s{
virtual void f(int& i){
if(i==0)throw out_of_range("out of range");
++i;
}
};
int main(void)
{
s*ps =new s;
int i=1;
fTime0();
fTime1();
for(__int64 c=0;c<2000000000;++c){
ps->f(i);
}
fTime2();
i=1;
fTime1();
for(__int64 c=0;c<2000000000;++c){
try{
ps->f(i);
}
catch(exception& e){
printf("%s\n",e.what());
}
}
fTime2(); delete ps;
return 0;
}
struct s{
s(){printf("ctor\n");}
~s(){printf("dtor\n");}
virtual void f(int& i){
if(i==0)throw out_of_range("out of range");
++i;
}
};