0

我想從我Ultrite數據庫的6個不同表加載關於10K記錄的數據。使用多線程並行地從多個表加載大數據

我已經爲6個不同的表創建了不同的功能。

我試圖加載這些並行使用NSInvokeOperations,NSOperations,GCD,子類化NSOperation,但沒有任何工作。

實際上,從一個表中加載10K需要4秒,而從另一個5秒開始,如果我將這2個加入隊列,則需要9秒。這意味着我的代碼沒有並行運行。

如何改善性能問題?請幫助我。

在此先感謝。

+1

請幫我迫切它有 – 2013-04-25 11:44:02

+1

當IO參與沒有真正的並行:/ – 2013-04-25 12:16:31

回答

-2

好吧,你必須使用帕拉時間功能看看他們在網上獲取更多信息做的

+5

您的CAPS LOCK鍵似乎被卡住了。 – likeitlikeit 2013-04-25 11:53:18

3

可能有多種方式。

我的建議是:

  • 組行的表視圖的數量要準確計數(10K你的情況)
  • 表視圖進行了優化,以創建僅在啓動細胞的極少數(遵循拉模型)。所以cellForRowAtIndexPath在開始時只會被調用幾次。
  • 有一個數組,並在開始時只讀取50個條目。有一個計數器變量。
  • 當用戶滾動表格視圖和計數達到50後取50個項目(這將需要非常少的時間),並填充單元格與下50個數據。 繼續做同樣的事情。

希望它有效。

+0

嗨,謝謝你的回答,你能否給我舉個例子,比如我如何獲取下50個物品。其實m寫查詢就像「select * from table」。在這種情況下,我可以應用你的概念嗎? – 2013-04-26 02:48:09

+0

是的,你可以,在tableview委託:cellForRowAtIndexPath檢查像這樣:if(indexPath.row == counterVariable){/ /獲取下一個50並追加你的可變數組}} ......每頁獲取50數據,你可以使用選擇*從表格限制50和下次選擇*從表格限制50,100等等(不太確定查詢PLZ檢查更多網絡)。 – Amit 2013-04-26 05:40:51

0

您應該以塊的形式提取記錄(即一次在表中獲取50-60條記錄)。 然後當用戶到達表的另一端加載另一個50-60個記錄時。 這將幫助你,我希望如此,試試這個庫... Bottom Pull to refresh more data in a UITableView

關於並行性去與GCD ...並重新加載相應的表時,GCD的成功塊調用。

我希望我帶來了幫助,你... 謝謝

相關問題