【发布时间】:2018-06-28 00:38:51
【问题描述】:
我有以下方法,我想用 Task.WhenAll() 加载测试:
static async Task<User> GetUserAsync()
{
return (await new ApiTester().GetUserAsync());
}
基本上,我想同时调用此方法 100 次,并在处理结束时确定每个方法调用的总经过时间和时间。如果你知道怎么做,你能提供代码吗?这对于 Task.WaitAll 专家来说可能很容易,但我只在一个非常具体的场景中使用过这种方法。
【问题讨论】:
-
当然,使用BenchmarkDotNet
-
问题是为什么?你想弄清楚什么。我的意思是它很容易使用
StopWatch和任务列表,但我不确定你在向自己证明什么,这是 IO 的东西,你加载完成端口,你将在上下文切换和线程池完成端口进出 -
@TheGeneral 重点是对 GetUserAsync 实现进行负载测试以验证它是否可以扩展
-
两个问题——(1) 你的测试运行器可能有错误的SynchronizationContext 和(2) 性能动态几乎总是非线性的,这意味着你不能只通过测试得到有意义的结果系统的一部分是孤立的。您应该针对在类生产硬件上运行的完整应用程序进行性能测试。
标签: c# .net asynchronous async-await task