比如针对 GetCustomAttributes 通过反射获取属性的优化,以下例子
// dotnet run -c Release -f net7.0 --filter "*" --runtimes net7.0 net8.0
public 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] 数组来设置属性的值
方法 | 运行时 | 平均值 | 比率 | 分配 |
---|