异步函数foo被调用 4 次,每次我们用.Result等待结果。
using System;
using System.Threading.Tasks;
using System.Diagnostics;
public class Program
{
public static void Main(string[] args)
{
Stopwatch sm = new Stopwatch();
sm.Start();
var result1 = foo().Result;
sm.Stop();
Console.WriteLine("duration 1 : " + sm.Elapsed.ToString());
sm.Reset();
sm.Start();
var result2 = foo().Result;
sm.Stop();
Console.WriteLine("duration 2 : " + sm.Elapsed.ToString());
sm.Reset();
sm.Start();
var result3 = foo().Result;
sm.Stop();
Console.WriteLine("duration 3 : " + sm.Elapsed.ToString());
sm.Reset();
sm.Start();
var result4 = foo().Result;
sm.Stop();
Console.WriteLine("duration 4 : " + sm.Elapsed.ToString());
}
public static async Task<int> foo()
{
await Task.Run(() =>
{
var x = 0;
for (int i = 0; i < 100; i++)
{
x++;
}
});
return 42;
}
}
第一次通话比其他通话花费更多时间,例如:
持续时间 1:00:00:00.0016609
持续时间 2:00:00:00.0001197
持续时间 3 : 00:00:00.0001045
持续时间 4 : 00:00:00.0000632
在最后一次调用之后调用另一个异步函数(例如与 foo 具有相同主体的函数 bar)将比第四次调用 foo 花费更多的时间。是什么原因?
慕码人2483693
相关分类