选择运行策略

  如果运行基准测试,则始终(显式或隐式)使用 Job。每个 Job都有RunStrategy参数,允许在不同的基准模式之间切换。默认的运行策略是吞吐量,这对于大多情况都是运行良好的。然而,在某些特定情况下,其他策略也很有用。

吞吐量

  吞吐量是默认的运行策略,非常适合微标准测试。它基于一组测试迭代自动选择主迭代中的操作量。迭代次数也会根据Job精准设置自动选择。基准方法应具有稳定状态。当然,你也可以手动设置所以特征参数,比如:

    [SimpleJob(launchCount: 3, warmupCount: 10, targetCount: 30)] public class MyBenchmarkClass

样例:冷启动

  如果你想跳过试点和热身步骤,那么你可以选择 冷启动策略。

用法

    [SimpleJob(RunStrategy.ColdStart, launchCount:50)] public class MyBenchmarkClass

源代码

    using System; using System.Threading; using BenchmarkDotNet.Attributes; using BenchmarkDotNet.Engines; namespace BenchmarkDotNet.Samples { [SimpleJob(RunStrategy.ColdStart, targetCount: 5)] [MinColumn, MaxColumn, MeanColumn, MedianColumn] public class IntroColdStart { private bool firstCall; [Benchmark] public void Foo() { if (firstCall == false) { firstCall = true; Console.WriteLine("// First call"); Thread.Sleep(1000); } else Thread.Sleep(10); } } }

输出

    Result 1: 1 op, 1002034900.00 ns, 1.0020 s/op Result 2: 1 op, 10219700.00 ns, 10.2197 ms/op Result 3: 1 op, 10406200.00 ns, 10.4062 ms/op Result 4: 1 op, 10473900.00 ns, 10.4739 ms/op Result 5: 1 op, 10449400.00 ns, 10.4494 ms/op
Method Mean Error StdDev Min Max Median
Foo 208.7 ms 1,707.4 ms 443.5 ms 10.22 ms 1,002.0 ms 10.45 ms

链接

样例: 监控简介

  如果一个基准测试方法至少需要100毫秒,您还可以使用 监视策略。

用法

    [SimpleJob(RunStrategy.Monitoring, launchCount: 10, warmupCount: 0, targetCount: 100)] public class MyBenchmarkClass

源代码

    using System; using System.Threading; using BenchmarkDotNet.Attributes; using BenchmarkDotNet.Engines; namespace BenchmarkDotNet.Samples { [SimpleJob(RunStrategy.Monitoring, targetCount: 10, id: "MonitoringJob")] [MinColumn, Q1Column, Q3Column, MaxColumn] public class IntroMonitoring { private Random random = new Random(42); [Benchmark] public void Foo() { Thread.Sleep(random.Next(10) * 10); } } }

输出

    Result 1: 1 op, 61552600.00 ns, 61.5526 ms/op Result 2: 1 op, 10141700.00 ns, 10.1417 ms/op Result 3: 1 op, 10482900.00 ns, 10.4829 ms/op Result 4: 1 op, 50410900.00 ns, 50.4109 ms/op Result 5: 1 op, 10421400.00 ns, 10.4214 ms/op Result 6: 1 op, 20556100.00 ns, 20.5561 ms/op Result 7: 1 op, 70473200.00 ns, 70.4732 ms/op Result 8: 1 op, 50581700.00 ns, 50.5817 ms/op Result 9: 1 op, 10559000.00 ns, 10.5590 ms/op Result 10: 1 op, 70496300.00 ns, 70.4963 ms/op
Method Mean Error StdDev Min Q1 Q3 Max
Foo 36.57 ms 40.03 ms 26.47 ms 10.14 ms 10.48 ms 61.55 ms 70.50 ms

链接

版权声明: 本文为智客工坊「楠木大叔」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

results matching ""

    No results matching ""