2016-05-13 96 views
0

嵌入式資源僅用於將文件編譯爲二進制文件?嵌入式資源 - resx - 性能 - C#

因性能原因使用嵌入式資源是一個好主意嗎?

這個問題涉及

  • 保存爲嵌入式資源XML文件
  • RESX文件(串)

在這兩種情況下,是否有相同的性能優勢:一些緩存策略,或有些事情是這樣的(因爲它可以像源代碼/程序集一樣進行管理)。

例如,我可以使用散列表(最近創建)而不是resx。在我的情況下,哈希表可能是如此之大,永遠留在記憶中。所以Resx是一個緩存策略的幫助?

我對樹對象有同樣的問題。從XML嵌入文件中使用它不能幫助我,還是應該實現所有的緩存策略?

認爲

回答

2

加入的性能的原因主要是因爲嵌入資源的功能。在像Windows這樣的需求頁面虛擬內存操作系統上沒有辦法更快地完成它。您可以充分利用內存映射文件來讀取資源內容。

這並不比閱讀單獨的文件要好得多,但您不必爲查找文件付費。這通常是對小資源的昂貴操作,並嚴重影響應用程序的冷啓動時間。沒有大量的文件部署是非常實用的優勢。

當然他們佔用內存,但它是虛擬內存。只需編號給處理器,每4096字節一個。另外便宜的一種虛擬內存,它由可執行文件而不是分頁文件支持。在您訪問程序中的資源之前,您實際上並不支付並開始使用RAM。除非您重複使用該資源,否則該RAM通常會很快再次發佈。它確實設置了可以嵌入的資源數據量的上限,以2千兆字節爲單位。

它們作爲一個XML資源開始只在構建時才起作用,Resgen.exe工具在將它嵌入到可執行文件之前將它變成二進制blob。 XML的優勢在於它可以很好地與IDE配合使用,並且在您忘記了原創作品的跟蹤之後,可以輕鬆恢復原始資源。