BenchmarkDotNet-.Net性能测试库

BenchmarkDotNet 是一个强大的. NET 库, 可用于性能测试,Benchmark 可以精准简单的测试应用程序性能,它为每个测试方法生成一个独立的项目, 执行此项目的多个启动, 并运行测试方法,以保证测试的精准性。

时间可以精确到微秒(us)、纳秒(ns),还可以测试内存使用情况

要想测试一个函数的性能只需要在函数上标记 BenchmarkAttribute 特性即可,并生成不同的格式的性能报告,它会计算许多统计数据, 允许您运行统计测试, 并比较不同测试方法的结果,它试图帮助您进行质量性能调查。

首先通过 NuGet 包管理器将库安装到项目中:

Install-Package BenchmarkDotNet

要测试的类:(在方法上加[Benchmark]特性)

    public class TestContext
    {
        [Benchmark]
        public void Build1()
        {
            var sqlBuilder = new SqlBuilder(typeof(Person));
            //生成查询SQL
            #region 复杂条件查询#SELECT `ID`,`Name` FROM `Person` WHERE ((`ID`=1 AND (`Age`=13 OR `Name`=1 OR `name` LIKE 'fan%')))  LIMIT 10
            var filter = new AndFieldFilter(new EqualFieldFilter<int>("ID", 1), new OrFieldFilter(new EqualFieldFilter<int>("Age", 13), new EqualFieldFilter<int>("Name", 1), new LikeFieldFilter("name", "fan", LikeMode.Start)));
            for (int i = 0; i < 100; i++)
            {
                var sql = sqlBuilder
                .SetTableName(nameof(Person))
                .SetAndWhere(filter)
                .BuildSelectSql();
            }

            #endregion
        }
        [Benchmark]
        public void Build2()
        {
            var builder = new ExpressionWhereBuilder('`');
            for (int i = 0; i < 100; i++)
            {
                string sql = builder.ToSql<Person>(p => p.ID == 1 && p.Name.Contains("fan") && p.Age == 13).Sql;
            }
        }
    }

控制台调用,即可输出性能测试图标

var summary = BenchmarkRunner.Run<TestContext>();
Console.ReadKey();

 

 测试内存使用情况,只需要在测试类上加特性 [MemoryDiagnoser] 

 

参考:

https://www.xcode.me/post/5777

https://www.cnblogs.com/h82258652/p/8748345.html

https://www.cnblogs.com/wu-fm/p/6655961.html

posted @ 2020-05-24 16:09  .Neterr  阅读(713)  评论(0编辑  收藏  举报