我应该为每个Web请求使用静态缓存的ResourceManager还是新实例? 有关系吗?

在使用new ResourceManger(myResourceType.FullName, myResourceType.Assembly)和使用new ResourceManger(myResourceType.FullName, myResourceType.Assembly)生成的类中的“缓存的ResourceManager实例”的每个请求上创建新的.NET ResourceManager的性能(或其他)含义(如果有的new ResourceManger(myResourceType.FullName, myResourceType.Assembly)MyResourceType.ResourceManager )?

我正在使用.resx文件在ASP.NET MVC 3应用程序的上下文中工作。

编辑:我感兴趣的是除了为新对象分配内存的成本之外的影响。

编辑:查看ResourceManager.ReleaseAllResources的MSDN文档,它指出:

This method will shrink the working set in a running application. Any future resource lookups on this ResourceManager will be as extensive as the first lookup, since it will need to search and load resources again.

这似乎意味着资源集的初始开放是昂贵的,这表明在每个请求上创建一个新的经理可能是昂贵的。 但是,文档并未提出有关资源管理器生命周期/范围的最佳实践。

我做了一些原始的分析(使用MiniProfiler),使用缓存管理器(我使用reflection来查找每种资源类型的静态缓存管理器)和为每个密钥访问使用新管理器之间的区别。 结果表明,新经理花了大约45倍的时间,这表明使用缓存管理器方法有一个真正的性能优势。 然而,这两种方法都是如此之快,以至于差异在实践中可能并不重要。

创建对象时,您将分配对象。

这意味着您将一遍又一遍地创建对象,从而产生性能和内存影响。

您可以尝试并检查您拥有的垃圾收集周期数(使用性能计数器)与创建一次(每个进程)的“缓存”资源管理器实例的数量,因此没有不必要的分配