在windows下计时主要有3种方法
1、ctime库,clock()函数的分辨率单位似乎是16毫秒左右,分辨率较低,长时间计时可以,短时间计时误差太大。
2、chrono库,号称提供高精度计时。但它返回的微秒数全是1000的倍数,令人怀疑它底层就是clock()改头换面而来的,实质的分辨率一样辣鸡。
3、rdtsc指令,返回电脑开机以来经过的cpu时钟数,比较精确,但要除以cpu频率才能转换成时间。而cpu频率只能通过windows的queryperformancefrequency功能获得,而返回的cpu频率数值似乎是在每次windows启动时测定的,之后就不再更新,而且这个频率本身似乎就不太准确,误差可能超过2%,这样转换出来的还是会产生可能超过2%的线性误差,计时越长误差越大,例如计时5分钟误差就可能超过6秒。
1、ctime库,clock()函数的分辨率单位似乎是16毫秒左右,分辨率较低,长时间计时可以,短时间计时误差太大。
2、chrono库,号称提供高精度计时。但它返回的微秒数全是1000的倍数,令人怀疑它底层就是clock()改头换面而来的,实质的分辨率一样辣鸡。
3、rdtsc指令,返回电脑开机以来经过的cpu时钟数,比较精确,但要除以cpu频率才能转换成时间。而cpu频率只能通过windows的queryperformancefrequency功能获得,而返回的cpu频率数值似乎是在每次windows启动时测定的,之后就不再更新,而且这个频率本身似乎就不太准确,误差可能超过2%,这样转换出来的还是会产生可能超过2%的线性误差,计时越长误差越大,例如计时5分钟误差就可能超过6秒。