.NET 反射优化的经验分享

比如针对 GetCustomAttributes 通过反射获取属性的优化,以下例子

// dotnet run -c Release -f net7.0 --filter "*" --runtimes net7.0 net8.0public class Tests{
      public object[] GetCustomAttributes() => typeof(C).GetCustomAttributes(typeof(MyAttribute), inherit: true);
    [My(Value1 = 1, Value2 = 2)]    class C { }
    [AttributeUsage(AttributeTargets.All)]    public class MyAttribute : Attribute    {
          public int Value1 { get; set; }        public int Value2 { get; set; }    }}

.NET7 和.NET8 明显的差异,它主要是优化了避免分配一个 object [1] 数组来设置属性的值

方法 运行时 平均值 比率 分配

你可能感兴趣的:(资源分享,工具软件技巧,运营和管理,.net)