我知道我不是唯一一个不喜欢在软件中给出不切实际估计的进度条或时间估计的人。最好的例子是安装人员在 10 秒内从 0% 跳到 90%,然后花一个小时完成最后的 10%。
大多数时候,程序员只是估计完成任务的步骤,然后将当前步骤/总步骤显示为百分比,而忽略了每个步骤可能需要不同时间才能完成的事实。例如,如果您将行插入数据库,则插入时间会随着插入行数的增加而增加(简单示例),或者复制文件的时间不仅取决于文件的大小,还取决于文件的位置。磁盘以及它的碎片程度。
今天,我问自己是否有人已经尝试对此进行建模,并且可能创建了一个带有可配置的鲁棒估计器的库。我知道很难给出可靠的估计,因为外部因素(网络连接、用户运行其他程序等)发挥了作用。
也许还有一种解决方案可以使用分析来设置更好的估计器,或者可以使用机器学习方法。
有人知道这个问题的高级解决方案吗?
与此相关,我发现重新思考进度条的文章非常有趣。它展示了进度条如何改变对时间的感知,以及您如何使用这些见解来创建似乎更快的进度条。
编辑:我可以想办法如何手动调整时间估计,即使使用“估计器库”,我也必须微调算法。但我认为这个问题可以用统计工具来解决。当然,估算器会在此过程中收集数据,以便为后续步骤创建更好的估算。
我现在要做的是取上一步所花费的平均时间(按类型分组的步骤并按例如文件大小、事务大小进行标准化)并将这个平均值作为下一步的估计(再次:计算不同的类型和尺寸)。
现在,我知道有更好的统计工具来创建估算器,我想知道是否有人将这些工具应用于这个问题。