大多数时候,当我看到有人在计算数学论文中报告计算机上某个算法的平均时间时,他们会这样做:
- 运行操作次(例如,次);
- 丢弃最低和最高次(例如,异常值);
- 计算剩余次的平均值。
我可以理解为什么放弃最高结果是有意义的:这些很可能是计算机将线程切换到做其他事情的情况。我不明白为什么放弃最低结果是有道理的。
为什么我要防止异常值比其他迭代更快?如果有的话,直觉上我会说它是结果中的最小值,它告诉我我的计算机真正需要多少时间来运行该算法。所有其他实例都是计算机切换到其他东西,或者管道和多线程没有得到最佳使用的情况。
我可以想象这有意义的唯一情况是报告的结果非常接近时钟的精度,但在这种情况下,我会说正确的方法是重复测量运行的时间同时(例如,),然后丢弃这些数字上的异常值。但是在主要关注多任务处理引起的异常值的情况下,我看不到这个过程的优势。