C# BenchmarkDotNet中的异常处理
我有一组对基准的HTTP调用:C# BenchmarkDotNet中的异常处理,c#,.net,benchmarking,benchmarkdotnet,C#,.net,Benchmarking,Benchmarkdotnet,我有一组对基准的HTTP调用: public class HttpExamples { [Benchmark] public void GetExampleCom() { var request = WebRequest.CreateHttp("http://example.com"); var webResponse = request.GetResponse(); } [Benchmark] public v
public class HttpExamples
{
[Benchmark]
public void GetExampleCom()
{
var request = WebRequest.CreateHttp("http://example.com");
var webResponse = request.GetResponse();
}
[Benchmark]
public void GetExampleComSsl()
{
var request = WebRequest.CreateHttp("https://example.com");
var webResponse = request.GetResponse();
}
}
有时,其中一个请求会因某种原因而失败。目前,这似乎停止了基准测试,我更希望它能以某种方式处理例外情况
这能实现吗
我想:
- 从结果中消除失败
- 他们发生了什么
- 保留失败的度量,以便我们可以看到失败如何影响结果
- 能够看到不同类型异常的结果
- 在失败时做一件事(清理一些什么)
将执行此操作尝试添加手动配置,类似于中提到的配置 添加(jitpoptimizationsvalidator.DontFailOnError);//允许非优化DLL
BenchmarkDotNet是一个微型基准测试工具,它是为非常精确的CPU绑定的纳米和微型基准测试而设计的。它可以进行一些HTTP基准测试,但即使您使用,您也不会像使用为HTTP基准测试而设计的工具(如or)那样获得良好的体验。BenchmarkDotNet是一种微型基准测试工具,它是为非常精确的CPU绑定纳米和微型基准测试而设计的。它可以做一些HTTP基准测试,但即使您使用,您也不会像使用为HTTP基准测试而设计的工具(如或)那样获得良好的体验。嗯。。。不是要成为一个聪明的a$$,而是
try/catch
?似乎表明它会工作,但有一些警告。迭代仍将包含在测试运行中。我希望在出错时忽略迭代。当前版本的BenchmarkDotNet(0.10.2)意味着基准方法不应该抛出任何异常。因此,尝试捕获是目前最好的解决方法。您可以随意创建一个关于高级异常处理的问题:@AndreyAkinshin就可以了。干杯,嗯。。。不是要成为一个聪明的a$$,而是try/catch
?似乎表明它会工作,但有一些警告。迭代仍将包含在测试运行中。我希望在出错时忽略迭代。当前版本的BenchmarkDotNet(0.10.2)意味着基准方法不应该抛出任何异常。因此,尝试捕获是目前最好的解决方法。您可以随意创建一个关于高级异常处理的问题:@AndreyAkinshin就可以了。干杯,我不知道这对我有什么帮助。这是对一个内部错误的修复。正如您所提到的:从结果中消除失败。因此,添加此配置将允许基准测试继续运行,并且在结果文件中,失败的方法将包含N/A和时间为0,以便您可以识别哪个基准测试失败。有一种和安装程序相同的方法叫做GlobalCleanup,就我个人而言,我觉得清理没有用。我不知道这对我有什么帮助。这是对一个内部错误的修复。正如您所提到的:从结果中消除失败。因此,添加此配置将允许基准测试继续运行,并且在结果文件中,失败的方法将包含N/A和时间为0,以便您可以识别哪个基准测试失败。有一种方法和安装程序名为GlobalCleanup的方法相同,我个人认为清理没有用。