2
我们希望将部分应用程序外包给外部公司。这些组件向外部网站发出异步请求,并使用html解析器或正则表达式处理内容。使用异步代码测量CPU密集时间
async Task Do()
{
var webContent = await Get("http://...");
var match = Regex.Match(webContent);
if (IsXXX(match))
{
webContent = await Get("http://other...");
}
}
每个组件都不同,有的只做一个请求,有的做更多。我们希望确保CPU密集型部分(正则表达式,解析)不超过100毫秒,并且希望在质量保证管道中作为第一步自动进行测试。有没有一种方法可以在没有等待Web请求的时间的情况下衡量性能?
我看到目前只有两个解决方案,但想知道是否有更好的方法:
- 提供对Web请求的包装和测量的等待时间。然后用简单的秒表测量时间并减去等待时间。使用生成的客户端类时,很难进行肥皂调用。
- 实现自定义同步上下文并在此处测量时间。
是否有一些内建解决方案?
如果外部公司要为您提供IO和CPU绑定调用,则需要告诉他们您希望能够独立地测试每个这些调用。 –
难道你不能只是围绕Regex.Match调用包裹一个秒表吗?让'做'测量自己并向呼叫者报告性能。 – usr
@Yuval:我们希望保持简单,以低成本的方式实现流程(我们是一家没有外部资金的创业公司)。组件由接口定义,我们为整个方法调用生成集成测试。唯一缺少的是CPU性能。 – SebastianStehle