Steven Toub向.NET 5介绍了免分配的ValueTask<T>
.
Method Runtime Mean Ratio Allocated
ValueTaskCost .NET FW 4.8 1,635.6 us 1.00 294010 B
ValueTaskCost .NET Core 3.1 842.7 us 0.51 120184 B
ValueTaskCost .NET 5.0 812.3 us 0.50 186 B <--- !
我第一次发现这一点是在Dapper英雄Marc Gravell here的一篇帖子中,他建议总是使用ValueTask
而不是Task
(尽管有趣的是Dapper没有这样做).
可以使用环境变量DOTNET_SYSTEM_THREADING_POOLASYNCVALUETASKS
来启用该功能,该变量似乎已不再存在于.NET中.
发生什么事了?这是一个技术原因被删除,或者可能是默认的?