使用多线程并行地从多个表加载大数据
我想从我Ultrite数据库的6个不同表加载关于10K记录的数据。使用多线程并行地从多个表加载大数据
我已经为6个不同的表创建了不同的功能。
我试图加载这些并行使用NSInvokeOperations,NSOperations,GCD,子类化NSOperation,但没有任何工作。
实际上,从一个表中加载10K需要4秒,而从另一个5秒开始,如果我将这2个加入队列,则需要9秒。这意味着我的代码没有并行运行。
如何改善性能问题?请帮助我。
在此先感谢。
可能有多种方式。
我的建议是:
- 组行的表视图的数量要准确计数(10K你的情况)
- 表视图进行了优化,以创建仅在启动细胞的极少数(遵循拉模型)。所以cellForRowAtIndexPath在开始时只会被调用几次。
- 有一个数组,并在开始时只读取50个条目。有一个计数器变量。
- 当用户滚动表格视图和计数达到50后取50个项目(这将需要非常少的时间),并填充单元格与下50个数据。 继续做同样的事情。
希望它有效。
嗨,谢谢你的回答,你能否给我举个例子,比如我如何获取下50个物品。其实m写查询就像“select * from table”。在这种情况下,我可以应用你的概念吗? – 2013-04-26 02:48:09
是的,你可以,在tableview委托:cellForRowAtIndexPath检查像这样:if(indexPath.row == counterVariable){/ /获取下一个50并追加你的可变数组}} ......每页获取50数据,你可以使用选择*从表格限制50和下次选择*从表格限制50,100等等(不太确定查询PLZ检查更多网络)。 – Amit 2013-04-26 05:40:51
您应该以块的形式提取记录(即一次在表中获取50-60条记录)。 然后当用户到达表的另一端加载另一个50-60个记录时。 这将帮助你,我希望如此,试试这个库... Bottom Pull to refresh more data in a UITableView
关于并行性去与GCD ...并重新加载相应的表时,GCD的成功块调用。
我希望我带来了帮助,你... 谢谢
请帮我迫切它有 – 2013-04-25 11:44:02
当IO参与没有真正的并行:/ – 2013-04-25 12:16:31