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的成功块调用。

我希望我带来了帮助,你... 谢谢

相关问题