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