C# 使用“config.GetSection”(“section”)[“key”是否会影响性能?

C# 使用“config.GetSection”(“section”)[“key”是否会影响性能?,c#,asp.net,configuration,appsettings,asp.net-core-2.0,C#,Asp.net,Configuration,Appsettings,Asp.net Core 2.0,我在asp.net core 2.0应用程序中使用基于声明的授权,而不是在整个应用程序中硬编码声明名称,我考虑在注入的配置对象(appsettings.json)中设置它们 但在我深入这条路之前,我很好奇是否有性能问题需要注意 大概是这样的: var subscriptionClaim = user.Claims.FirstOrDefault(c => c.ClaimType == _config.GetSection("ClaimNames")["BasicMembership"]);

我在asp.net core 2.0应用程序中使用基于声明的授权,而不是在整个应用程序中硬编码声明名称,我考虑在注入的配置对象(appsettings.json)中设置它们

但在我深入这条路之前,我很好奇是否有性能问题需要注意

大概是这样的:

var subscriptionClaim = user.Claims.FirstOrDefault(c => c.ClaimType == _config.GetSection("ClaimNames")["BasicMembership"]);
而不是像这样的东西:

var subscriptionClaim = user.Claims.FirstOrDefault(c => c.ClaimType == "basicMembership");
在这一点上,我已经有4-5次声明我在我的应用程序的不同点上添加/删除用户。将名称滚动到appsettings中的原因是确保我没有键入声明名称,如果将来出于任何原因,我可以更轻松地更改它们

但是如果
\u config.GetSection(“section”)[“key”]的性能受到了显著的影响,我宁愿不要。我倾向于没有一个明显的性能命中,但我想确定


提前谢谢

您的
\u配置
i配置
对象吗

通常,您在应用程序启动时构建配置对象,并且这些信息会加载到内存中,因此,是的,性能差异最多可以忽略不计


但正如其他人所说,如果性能是一个问题,没有比自己测试更好的方法了。

最好的方法是自己检查。。没有什么比发现并向自己证明更好的了——最好是在配置周围有一个包装器类。将其设为静态,这样它将只从文件中检索一次配置数据并保留它。并在任何需要配置值的地方使用该包装器类。谢谢。它是一个IConfiguration对象,是在启动时构建的——现在自动作为asp.net core 2.0应用程序。