我正在尋找C/C++/Obj-C的庫來維護磁盤緩存以供我的對象使用。用於維護磁盤緩存的庫
- 有大量對象(數萬)的每個對象是100 + KB的大小
- 對象不斷地訪問/添加,有時大組對象被替換
目前我只是將每個對象存儲在單獨的文件中,但我不想在文件系統中創建這麼多的文件。是否有任何庫可以使用這種緩存來使用一個/多個文件?
我正在尋找C/C++/Obj-C的庫來維護磁盤緩存以供我的對象使用。用於維護磁盤緩存的庫
目前我只是將每個對象存儲在單獨的文件中,但我不想在文件系統中創建這麼多的文件。是否有任何庫可以使用這種緩存來使用一個/多個文件?
我用東京內閣圖書館解決了我的問題。工作比爲每個對象使用單獨的文件更快。
您可以使用所有對象創建一個集合(NSArray,NSSet,NSDictionary),並使用NSKeyedArchiver/NSKeyedUnarchiver將其放入單個文件中。
您也可以使用SQLite數據庫或CoreData,其優點是您不必一次將所有內容加載到內存中,只要您根據需要將對象從對象中拉出即可。特別是如果你有(數萬* 100 + Kb,這永遠不會適應記憶......)。你也可以使用C++序列化庫(儘管讓它們與obj c對象一起工作會很棘手......,更推薦用於C++對象),比如boost序列化/歸檔(可以輸出二進制,文本,xml),再次你可以使用集合(std :: list,std :: map ...)將它們全部存儲到一個文件中。
壓縮庫會這樣做。看到這個[問題] [1]。 [1]:http://stackoverflow.com/questions/230984/compression-api-on-the-iphone –
您可以創建一個對象,將持有的所有文件,並使其序列化來保存它的二進制文件,並添加到它的方法來讀取和寫入文件只有在需要時(它的性能是你關心的) –