gpt4 book ai didi

c# - 如何估计 WinForms 中方法的结束时间以正确通知用户预计完成时间?

转载 作者:太空狗 更新时间:2023-10-29 23:11:35 26 4
gpt4 key购买 nike

我有一些计时器可以测量执行代码的时间。

 DateTime startTimeFunctionTotal = DateTime.Now;
for (int i = 0; i < array.Count; i++) {
DateTime startTimeFunction = DateTime.Now;
//some code here

DateTime stopTimeFunction = DateTime.Now;
TimeSpan durationTimeFunction = stopTimeFunction - startTimeFunction ;

}
DateTime stopTimeFunctionTotal = DateTime.Now;
TimeSpan durationTimeFunctionTotal = stopTimeFunctionTotal - startTimeFunctionTotal ;

如果预测时间根据更多数据发生变化(每个循环都有更多数据,因此预测应该更准确),则允许(甚至更好)。

我想给用户一个预计的完成时间(包括 15 分钟和 10:56)。

最佳答案

假设 for 语句中的每个操作花费的时间大致相同:

List<TimeSpan> timeSpans = new List<TimeSpan>();
for(int i = 0; i < array.Count; i++)
{
Stopwatch watch = Stopwatch.StartNew();
//do stuff
timeSpans.Add(watch.Elapsed);
long ticksLeft = timeSpans.Sum(ts => ts.Ticks) * (array.Count - i) / timeSpans.Count;
Console.WriteLine("Left: " + new TimeSpan(ticksLeft));
Console.WriteLine("Finished in: " +
DateTime.Now.AddTicks(ticksLeft));
}

使用中位数:

long ticksLeft = timeSpans.OrderBy(ts => ts.Ticks)
.ElementAt(timeSpans.Count / 2).Ticks * (array.Count - i);

关于c# - 如何估计 WinForms 中方法的结束时间以正确通知用户预计完成时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2357097/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com