Mad*_*Boy 5 .net c# datetime winforms c#-3.0
我有一些计时器来衡量执行代码的时间.
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 ;
Run Code Online (Sandbox Code Playgroud)
如果预测的时间根据更多数据而变化(每个循环有更多数据,因此预测应该更准确),这是允许的(甚至更好).
我想给用户一个预测的完成时间(时间分别为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));
}
Run Code Online (Sandbox Code Playgroud)
与中位数一起使用:
long ticksLeft = timeSpans.OrderBy(ts => ts.Ticks)
.ElementAt(timeSpans.Count / 2).Ticks * (array.Count - i);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
890 次 |
| 最近记录: |