public sealed class Test2 : Base { static readonly Task _emptyTask; static Test2() { TaskCompletionSource source = new TaskCompletionSource(); source.SetResult(null); _emptyTask = source.Task; } public override Task DoStuffAsync() { return _emptyTask; } }
然后我记得静态构造函数和性能的“问题”,经过一些研究(我就是这样),我决定做一个小的基准测试:
Stopwatch sw = new Stopwatch(); List test1list = new List(), test2list = new List(); for (int j = 0; j < 100; j++) { sw.Start(); for (int i = 0; i < 1000000; i++) { Test1 t = new Test1(); if (!t.DoStuffAsync().IsCompleted) throw new Exception(); } sw.Stop(); test1list.Add(sw.ElapsedMilliseconds); sw.Reset(); sw.Start(); for (int i = 0; i < 1000000; i++) { Test2 t = new Test2(); if (!t.DoStuffAsync().IsCompleted) throw new Exception(); } sw.Stop(); test2list.Add(sw.ElapsedMilliseconds); sw.Reset(); GC.Collect(); } Console.WriteLine("Test 1: " + test1list.Average().ToString() + "ms."); Console.WriteLine("Test 2: " + test2list.Average().ToString() + "ms.");