2010-02-04 53 views
1

我正在研究一個應用程序,其中的大部分將是一個類似電子表格的視圖(數字值儘管是列和行的名稱)。在這種情況下使用Core Data是否有意義?我擔心效率問題,因爲我知道Core Data本身並不支持數組,並且我不覺得這種關係適合我的情況。但也許我錯了?使用核心數據的類似電子表格的應用程序?

回答

1

儘管核心數據對於使用SQLite存儲類型的提取請求非常快,但有一件事會讓你放慢速度,這就是所有-valueForKey/Path:調用一旦實現對象就會獲取數據點(您的單元格)的值(即,查詢數據庫的速度非常快,但是一旦它們進入後,查詢它們的屬性的錯誤對象在中慢得多)。

不要低估這些電話的五萬個重量,特別是在排序和顯示方面。在託管對象模型中有幾種不同的方式來表示它們,但它們都遭受同樣的問題,並且在性能方面有各種折衷,等於「不夠快」以跟蹤任意大小的矩陣中的單個單元。如果你一直知道你的電子表格會有30列,這個問題就大大簡化了......但這將是一個相當差的電子表格。 :-)

即使您使用了大量緩存(例如文檔中提到的「預先計算的獲取」方法),您只會將負擔轉移到內存上,這可能無法挺起來以及在不同的機器上。

我的建議是讓Core Data離開這個。

0

雖然沒有在Core-Data中特別實現,但我在基於Web的應用程序中使用了Java和Hibernate。

如果你能預測你需要顯示哪些數據(這也算冬眠),核心數據是相當快的。因此,您應該從模型和背景數據庫中分離出視圖以緩存可用數據並使用粗粒度操作來獲取重用的單元。

如果模型中存在很多依賴關係,則對數據庫的粗粒度訪問可能導致將整個信息網絡提取到模型中。目前我使用的是多級公司餘額,只要將任何對應用程序的訪問簡單地將整個數據結構提取到內存中即可。

0

我做了(相當天真的實現)核心數據電子表格的使用Cocoa綁定到一個NSTableView應用程序,並發現表現不可接受的,一旦它得到了高達約20行和20列。但這是我的第一個Cocoa項目,並沒有(在很大程度上仍然不知道)優化Core Data的第一件事。

你可以在這裏下載和試用應用程序:

http://frankschmitt.org/projects/checkpoint

,如果你有興趣(聯繫在該網站上的信息),我可以送你的來源。

+0

謝謝,弗蘭克,但我很害怕我的應用程序必須處理順利,絕對超過20行和列......目前,我並不需要編寫代碼的幫助(但?:))但而如果在這種類型的應用程序中使用核心數據可能是一個很好的選擇或不是一些一般線索。 – dzolanta 2010-02-04 20:49:32

相關問題