2012-06-03 117 views
0

將核心數據中的4種屬性存儲到32位整數中是否矯枉過正? 或者我應該簡單地爲每個人創建一個單獨的屬性? (將使用邏輯運算符來設置/獲取)。核心數據效率

我計劃添加一個新的實體到一個現有的對象,該對象將包含大約14個屬性(包括用於訂購目的的「索引」屬性)的200-400個項目。隨時只能操作或觀看一組。

我需要保持撤消支持(參考How do I improve performance of Core Data object insert on iPhone?

我也許可以,如果我幾個屬性存儲到一個單場吐溫這個下降到約8個屬性。除了可搜索性問題,我會節省可觀的空間嗎?

另外,將一組400個對象存儲在越來越多的項目列表中是不合理的,這些項目將以每週大約1-3的速度增長?

我聽說有些人在覈心數據中存儲了成千上萬的項目,所以也許我是偏執狂。我想從長遠來看,我需要提供一個導出歸檔選項,或許可以提供給iCloud。

+0

只是爲了確認。您可以將數千個項目存儲在Core Data SQLite持久性存儲中。它運作良好。 – Adam

+0

謝謝亞當! – Christopher

回答

1

所以你說你有400個有14個屬性的對象,你可以將它們作爲單獨的整數存儲,或者組合成更少的32位(4字節)值?

400×14×4個字節= 22400個字節

這不是非常大的空間都沒有。如果你將其削減一半,那麼你就節省了11K,這可能會因爲你編碼和解碼這些值所產生的額外代碼的大小而變得相形見絀。

但是不要聽我說:寫一個小的測試程序,將值填入核心數據,然後在分析器下運行它,看看會發生什麼。

您還可以閱讀SQLite以及它如何存儲值,因爲這是Core Data在底層使用的內容。

我的直覺告訴你,你偏執狂,你的代碼沒有多大幫助。更糟糕的是,當你忘記自己正在使用符號擴展進行轉換時,這將是一種很好的方式來引入真正微妙的錯誤。 (並且我喜歡寫點位代碼!)

+0

謝謝!編寫測試程序是一個好主意。一個務實的程序員提示出現在腦海中......「不要假設 - 證明它」。我也會檢查SQL Lite文檔。 – Christopher