Csharp/C#教程:我应该为每个Web请求使用静态缓存的ResourceManager还是新实例? 有关系吗?分享


我应该为每个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倍的时间,这表明使用缓存管理器方法有一个真正的性能优势。 然而,这两种方法都是如此之快,以至于差异在实践中可能并不重要。

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

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

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

上述就是C#学习教程:我应该为每个Web请求使用静态缓存的ResourceManager还是新实例? 有关系吗?分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/1013403.html

(0)
上一篇 2021年12月30日
下一篇 2021年12月30日

精彩推荐