代码改变世界

关于 BenchmarkDotNet

2019-07-30 19:03  音乐让我说  阅读(264)  评论(0)    收藏  举报
using BenchmarkDotNet.Attributes;
using BenchmarkDotNet.Order;
using System.Reflection;

namespace BenchmarkAndSpanExample
{
    public class UserQc
    {
        public string NameLike { get; set; }
    }

    [ClrJob(baseline: true), CoreJob]
    [RPlotExporter, RankColumn]
    public class PropertyDynamicParserBenchmarks
    {
        private UserQc _userQc;
        private static readonly PropertyInfo _nameLikeProp =
            typeof(UserQc).GetProperty("NameLike", BindingFlags.Instance | BindingFlags.Public);

        [GlobalSetup]
        public void Setup()
        {
            _userQc = new UserQc { NameLike = "张三" };
        }

        [Benchmark]
        public object GetValueWithReflect() => _nameLikeProp.GetValue(_userQc);

        [Benchmark]
        public object GetValueWithEmit() => _userQc.NameLike;
    }
}

 

 

    public class Program
    {
        public static void Main(string[] args)
        {
            var summary = BenchmarkRunner.Run<PropertyDynamicParserBenchmarks>();
        }
    }

 

 

谢谢浏览!