min*_*iya 3 c# performance resx embedded-resource
嵌入资源仅用于将文件编译为二进制部分?
出于性能原因使用嵌入式资源是个好主意吗?
这个问题涉及
在这两种情况下,是否有相同的性能优势:一些缓存策略,或类似的东西(因为它可以像源代码/程序集一样进行管理)。
例如,我可以使用哈希表(最近创建)而不是 resx。在我的情况下,哈希表可能太大而无法永远留在内存中。那么 Resx 对某些缓存策略有帮助吗?
我对树对象有同样的问题。从 XML 嵌入文件中使用它对我没有帮助,或者我应该实现所有缓存策略吗?
认为
添加嵌入式资源功能主要是出于性能原因。在像 Windows 这样的按需页面虚拟内存操作系统上,没有办法更快地做到这一点。您可以充分利用内存映射文件来读取资源内容。
这并不比读取单独的文件好多少,但您不必为必须找到该文件而付费。这通常是对小资源的昂贵操作,并且严重影响应用程序的冷启动时间。无需部署大量文件是一个非常实用的优势。
它们当然会占用内存,但它是虚拟内存。只是给处理器编号,每 4096 个字节一个。也是一种廉价的虚拟内存,它由可执行文件而不是页面文件支持。在访问程序中的资源之前,您实际上并不需要付费并开始使用 RAM。除非您反复使用该资源,否则该 RAM 通常会很快再次释放。它确实设置了您可以嵌入的资源数据量的上限,逐渐减少到 2 GB。
它们作为 XML 资源开始仅在构建时才重要,Resgen.exe 工具在将其嵌入可执行文件之前将其转换为二进制 blob。XML 的优点是它可以很好地与 IDE 配合使用,并且可以在您失去对原始艺术作品的跟踪后轻松恢复原始资源。
| 归档时间: |
|
| 查看次数: |
1738 次 |
| 最近记录: |