【问题标题】:Is there a performance impact in using _config.GetSection("section")["key"]?使用 _config.GetSection("section")["key"] 对性能有影响吗?
【发布时间】:2018-03-09 00:33:44
【问题描述】:

我在我的 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 的原因是确保我不会拼写声明名称,并且如果将来出于任何原因我可以更轻松地更改它们。

但如果_config.GetSection("section")["key"]); 有明显的性能影响,我宁愿不这样做。我倾向于没有明显的性能命中,但我想确定一下。

提前致谢!

【问题讨论】:

  • 最好的发现方法是自己检查......没有什么比发现并向自己证明这一点更重要
  • 最好有一个围绕配置的包装类。将其设为静态,以便它只从文件中检索配置数据一次并保留它。并在需要配置值的任何地方使用该包装类。

标签: c# asp.net configuration appsettings asp.net-core-2.0


【解决方案1】:

您的_configIConfiguration 对象吗?

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

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

【讨论】:

  • 谢谢。它是一个在启动时构建的 IConfiguration 对象——现在是自动的,因为它是一个 asp.net core 2.0 应用程序。
猜你喜欢
  • 2011-11-12
  • 2014-01-05
  • 2012-10-08
  • 1970-01-01
  • 2019-11-04
  • 2012-11-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多