计算程序中的估计时间
Calculate estimated time in a program
我正在编写一个程序,我想向用户提供有关每处理1000个元素的估计时间的信息。我是这样计算时间的:
- C =已处理的元素
- MAX =处理的最大元素数
- Tp =时间流逝
- Te =估计时间
(C/Tp) = (MAX - C)/(Te - Tp)
所以我需要求解通过执行:
(Te - Tp) = (MAX - C)Tp/C
最后:
Te = (MAX - C)Tp/C + Tp
我认为分辨率是正确的,但显然,随着C和Tp的增长,操作并不趋于0,所以我确信我在做一个愚蠢的错误,但我找不到。
有什么好主意吗?
我认为你的初始方程有点偏离,而不是你应该有的
(C/Tp) = (MAX - C)/Te
,因为我们估计处理每个项目所需的时间,这应该是恒定的,在过去和未来相等。这将给你一个最终的方程
Te = (MAX - C)*(Tp/C)
,如预期的那样趋向于零。
(假设Te
是剩余的估计时间,而不是估计的总时间)
我觉得很好。你可能会想到"剩余时间",在你的例子中是Tr = Te - Tp。那个趋向于0
Start: C = 0,结果除以0。有道理,你没有速度指示,所以没有估计。
End: C= MAX, MAX-C=0,所以Te=Tp。有意义,估计现在等于运行时间。
中途,C=MAX/2, MAX-C =C,所以Te=C*Tp/C + Tp,或者大约是当前通过量的两倍。是有意义的。
四分之一,C= MAX/4, MAX-C=3*C,则Te=3*C*Tp/C + Tp,或Te= 4*Tp。又说得通了
您不应该占用整个时间。
你应该取1000个对象的最后4-5块的平均值。因为这样可以让你更准确地了解当前的计算速度。
t1,t2,t3,t4 = last 4 calculations
thisIteration = timePassedSinceLastCheck/1000 //Avg time per object
Te = (Max-C)*Avg(t1,t2,t3,t4,thisIteration)
相关文章:
- 如何使用发送数据包所花费的时间计算两个节点之间的距离?
- 我的C++级数计算程序出了什么问题?被困了好几个星期
- 从ubuntu上的utc时间计算unix时间
- 使用 C++ 和 OOP 创建面积计算程序
- 如何在长时间计算中进行C 的一次进度更新
- 测量执行时间 - 在程序代码或外壳中
- Qt C++ "keine Rückmeldung" - 长时间计算期间 GUI 中的错误
- 设置具有非constexpr函数的constexpr变量(但可以在编译时间计算)
- 我正在尝试编写一个简单的计算程序,但答案一直返回为 0
- 在c++上创建税务计算程序,错误为未初始化的局部变量
- 不计算程序中的最低和最高成绩。(C++)(流)
- Poco 日期时间格式化程序 - 使用当前时区打印时间戳
- 精确计算C++程序所使用的内存
- 运行时间错误:程序跳过提示,以获取第二名和第三个名称
- 使用OpenMP C++并行计算程序的积分
- 时间转换程序
- 计算C++程序中留下评论的行数
- 当主循环正在侦听消息时,如何在特定时间退出程序
- 使用 Unix 程序时间计算每次迭代的程序运行时间
- 计算程序中的估计时间