C# BenchmarkDotNet中的异常处理

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

我有一组对基准的HTTP调用:

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
将执行此操作

尝试添加手动配置,类似于中提到的配置

添加(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的方法相同,我个人认为清理没有用。