繁体   English   中英

使用异步代码测量 CPU 密集型时间

[英]Measure cpu intensive time with async code

我们想将我们应用程序的一部分外包给外部公司。 这些组件向外部网站发出异步请求,并使用 html 解析器或正则表达式处理内容。

async Task Do()
{
   var webContent = await Get("http://...");
   var match = Regex.Match(webContent);

   if (IsXXX(match))
   {
       webContent = await Get("http://other...");
   }
}

每个组件都是不同的,有些只做一个请求,有些做更多。 我们希望确保 CPU 密集型部分(Regex、Parsing)花费的时间不超过 100 毫秒,并希望将其作为质量保证管道的第一步进行自动测试。 有没有办法在没有 Web 请求等待时间的情况下测量性能?

我目前只看到两种解决方案,但想知道是否有更好的方法:

  1. 为 Web 请求提供包装器并测量等待时间。 然后使用简单的秒表来测量时间并减去等待时间。 使用生成的客户端类时,soap 调用很困难。
  2. 实现自定义同步上下文并在此处测量时间。

是否有一些内置的解决方案?

模拟 IO 绑定的 Web 请求以立即返回一个 HTML 字符串,该字符串将需要类似的 CPU 来处理。 例如,使用return Task.FromResult(XXX)来获取已完成的任务。 然后对整个方法进行测量。

请注意,您可以使用Microsoft Fakes将任何内部调用替换为您自己的方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM