2011-12-22 29 views
3

(第一實體)對此數據模型使用NSBinaryStoreType可以嗎?

  • NSString(平均20個字符)

(第二實體)

  • NSDate
  • NSDate
  • NSNumber(0或1布爾使用)
  • NSString(平均1000字)

這兩個實體有一對多的關係(FIRST_ENTITY < < - >> SECOND_ENTITY)。


假設平均有100個第一個實體和1000個第二個實體。 二進制存儲如何適應此?

如果我把自己的號碼加起來,那麼第一個實體有1000個,第二個實體有10000個呢?它現在看起來如何?

知道的任何輸入:)

回答

4

當你打開一個二元店,它的所有內容將被加載到內存中。因此,您的應用程序需要在第一種情況下實例化大約10 000個對象,在第二種情況下(例如對象ID +緩存節點+緩存節點的字典+關係+屬性),需要100 000個對象。如果您的應用程序掛起幾秒鐘(或更長時間),我不會感到驚訝。

此外,存儲10000個unichar(2字節)字符的字符串在內存中使用大約20MB(但您的整個圖形將更大),這對於iOS設備來說非常重要。

我沒有測試從我的設備上的二進制存儲加載數據模型的佔用空間,但我認爲在這種情況下您確實不應該使用NSBinaryStoreType

+0

SQLite做同樣的事情。它將所有數據加載到內存。 – 2013-03-24 18:53:58

+3

@IvanSurzhenko不,它不。根據Apple的說法:_在使用大型數據集的已部署應用程序中,通常使用SQLite存儲,因爲這提供了高性能,並且不需要整個對象圖駐留在memory_中。 ([來源](https://developer.apple.com/library/ios/#documentation/Cocoa/Conceptual/CoreData/Articles/cdPersistentStores.html%23//apple_ref/doc/uid/TP40002875-SW4)) – cbrauchli 2013-05-16 01:26:01

相關問題