2016-05-13 48 views
0

嵌入式资源仅用于将文件编译为二进制文件?嵌入式资源 - resx - 性能 - C#

因性能原因使用嵌入式资源是一个好主意吗?

这个问题涉及

  • 保存为嵌入式资源XML文件
  • RESX文件(串)

在这两种情况下,是否有相同的性能优势:一些缓存策略,或有些事情是这样的(因为它可以像源代码/程序集一样进行管理)。

例如,我可以使用散列表(最近创建)而不是resx。在我的情况下,哈希表可能是如此之大,永远留在记忆中。所以Resx是一个缓存策略的帮助?

我对树对象有同样的问题。从XML嵌入文件中使用它不能帮助我,还是应该实现所有的缓存策略?

认为

回答

2

加入的性能的原因主要是因为嵌入资源的功能。在像Windows这样的需求页面虚拟内存操作系统上没有办法更快地完成它。您可以充分利用内存映射文件来读取资源内容。

这并不比阅读单独的文件要好得多,但您不必为查找文件付费。这通常是对小资源的昂贵操作,并严重影响应用程序的冷启动时间。没有大量的文件部署是非常实用的优势。

当然他们占用内存,但它是虚拟内存。只需编号给处理器,每4096字节一个。另外便宜的一种虚拟内存,它由可执行文件而不是分页文件支持。在您访问程序中的资源之前,您实际上并不支付并开始使用RAM。除非您重复使用该资源,否则该RAM通常会很快再次发布。它确实设置了可以嵌入的资源数据量的上限,以2千兆字节为单位。

它们作为一个XML资源开始只在构建时才起作用,Resgen.exe工具在将它嵌入到可执行文件之前将它变成二进制blob。 XML的优势在于它可以很好地与IDE配合使用,并且在您忘记了原创作品的跟踪之后,可以轻松恢复原始资源。