【发布时间】:2012-07-25 18:04:09
【问题描述】:
在我们项目的早期,我们创建了一个 Locale 类,其中包含一个字符串,例如“en-US”,我们可以从中派生国家和语言以及其他一些信息。
我们现在面临的问题是我们创建了太多的 Locale 对象。这些对象几乎在任何地方都用作参数或 Dictionary/HashSet 键。在进行了一些分析之后,我们意识到我们花费了太多时间来创建这些 Locale 对象。
知道我们有一组有限的语言环境并且这些对象是不可变的,那么您建议采用什么模式来将创建的对象数量保持在最低限度?
【问题讨论】:
-
作为给定答案的旁白(这很好),如果适用,请务必考虑线程安全访问。例如,使用
Dictionary缓存条目本质上不是线程安全的(除非您可以保证缓存将在任何读取之前预先构建)。我不确定这对你来说是否是个问题,但鉴于你说你“无处不在”使用它们,甚至测量处理它们的非平凡处理时间,我认为它可能适用。
标签: c# .net optimization memory-management