我正在尝试评估一组语句所花费的时间。以下是伪代码。该代码是在Xilinx芯片组上使用自定义RTOS在C ++中实现的,因此传统的c ++时钟功能在这里不起作用。
我不需要实际时间测量方面的帮助,但需要更多有关如何计算实际执行时间的数学帮助。
one = clock.getTime();
/*statement
* 1 *
* to *
* 10 */
two = clock.getTime();
fTime = two - one;
现在我知道了声明所花的时间。这个时间还包括getTime()花费的时间吗?
one = clock.getTime();
clock.getTime();
two = clock.getTime();
cTime = two - one; //Just measure and the min value i get is 300 microseconds.
现在,该块为我提供了getTime()花费的时间。
最后,我的问题是:
声明实际花费的时间是多少?
您的时间测量会改变时间
如果它在足够稳定的平台上,那么移位在所有时间都是相同的,因此
one = t1 + dt
two = t2 + dt
减去后,移位消除了自身,所以
two-one = (t2+dt)-(t1+dt) = t2-t1
因此在这种情况下,无需对时间测量偏移进行校正。
问题始于代码执行可变的多标量/矢量架构
依此类推,那么您就必须使用缓存无效化。同样,如果您getTime()
等待中断或硬件事件,也可能会增加一些错误T
在这种情况下,请多次测量并获得平均值或最小有效结果,例如:
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句