问候!!
以下代码工作正常....至少超过一秒将执行expx函数 在功能Getexp中,我每隔0.01秒称Getexp为100次, 实际上expx函数只会被调用一次,这就是我想要的!!
但是,我的用户需要更改为至少0.5秒才能调用expx, 因为以下代码在tick1中工作,tick2在整数类型中, 我需要建议改变下面没有太多代码,并满足用户需求....
哪种功能最适合我的情况? time_t在0.5秒的情况下不会为我工作!
double Getexp(double valuex)
{
double wgt=0.9 ;
static double value_t0=0.0 ;
static double value_t1=0.0 ;
double dret = 0.0 ;
static time_t tick1=0 ,tick2=0 ;
if(value_t0 < 0.0001)
{
tick1=time(NULL);
tick2=tick1 ;
value_t0 = valuex ;
value_t1 = valuex ;
dret = expx(value_t1,value_t0,wgt) ;
value_t0 = dret ;
return value_t0 ;
}
tick2=time(NULL);
if(tick2 > tick1)
{
tick1 = tick2 ;
value_t1 = valuex ;
dret = expx(value_t1,value_t0,wgt) ;
value_t0 = dret ;
return value_t0 ;
}else
{
return value_t0 ;
}
}
答案 0 :(得分:0)
我猜你的'时间(NULL)'没有你想要的精度。如果它说10毫秒精度,你每秒调用expx 100次......
你需要一个高精度计时器,然后你不应该做timer1 = timer2;但是timer1 = timer2 + DELAY; DELAY是你不想打电话给expx的时候。
有时计时器以毫秒为单位给出时间,但这并不意味着它们具有毫秒级的精度。例如,如果我没记错的话,Windows计时器在最差的情况下可以具有25-50毫秒的精度。
答案 1 :(得分:0)
评估所询问的内容相当困难。但我怀疑你抱怨“时间()”只是精度到最接近的秒,但你需要亚秒精度。
要探索一些时钟功能,而不是调用“时间”。
GetTickCount(Windows)
GetSystemTime(Windows)
换句话说,考虑将代码转换为以毫秒为单位的处理时间,并使用上述适当的调用之一来获得该时间