ConfigurationManager与变量

时间:2014-09-12 11:50:55

标签: c# optimization configurationmanager

所以我在WCF服务中看到了一段代码,它从配置中读取一个值(appsettings)并将该值分配给变量。随后询问该变量以改变方法调用的结果。

有问题的特定WCF调用被调用了很多。我正在考虑是否删除变量及其分配,因此对ConfigurationManager.AppSettings [“seeting”]进行多次调用将比为新变量分配内存更高效,以保存值ConfigurationManager.AppSettings [“seeting” “]在每个方法调用上(尽管在方法执行的顶部每次调用一次)。

这可能是一个微优化,但每次执行时堆上的内存分配让我思考是否更快地询问AppSettings背后的NameValueCollection或为更清晰的代码分配内存。

欢迎提出意见。

2 个答案:

答案 0 :(得分:1)

意见:微观优化是所有邪恶的根源......

如果您发现问题,请尝试解决。否则,我怀疑这是一个真正的问题。唯一的问题是,为了弄清楚,你将不得不花一些时间来分析你的应用程序。你花费的时间可能比你节省的时间更长......直到你。

(话虽如此,我知道你的感受,因为我自己有时会对这些问题感到疑惑......我会尝试将自己重新投入到富有成效的工作中,而不是每天都在做梦......) / p>

答案 1 :(得分:1)

我怀疑你的问题在于ConfigurationManager,因为(根据MSDN):

For some sections such as appSettings and connectionStrings, use the AppSettings and ConnectionStrings classes. These members perform read-only operations, use a single cached instance of the configuration, and are multithread aware. - http://msdn.microsoft.com/en-us/library/system.configuration.configurationmanager(v=vs.110).aspx

由于缓存了appsettings,通过ConfigurationManager.AppSettings [“x”]访问该集合不会是一个浪费的操作。