Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 使用多线程并行加载多个表中的大数据_Ios_Performance_Uitableview_Grand Central Dispatch_Nsthread - Fatal编程技术网

Ios 使用多线程并行加载多个表中的大数据

Ios 使用多线程并行加载多个表中的大数据,ios,performance,uitableview,grand-central-dispatch,nsthread,Ios,Performance,Uitableview,Grand Central Dispatch,Nsthread,我正在尝试从Ultralite数据库的6个不同表中加载大约10K记录的数据 我为6个不同的表创建了不同的函数 我尝试使用NSInvokeOperations、NSOperations、GCD和NSOperation子类并行加载这些操作,但没有任何效果 实际上,从1个表加载10K需要4秒,从另外5秒开始,如果我将这2个表保持在队列中,则需要9秒。这意味着我的代码没有并行运行 如何改善性能问题?好的,您必须使用Para和Time功能在线查询更多信息可能有多种方法 我的建议是: 将表视图的行数设置为

我正在尝试从Ultralite数据库的6个不同表中加载大约10K记录的数据

我为6个不同的表创建了不同的函数

我尝试使用NSInvokeOperations、NSOperations、GCD和NSOperation子类并行加载这些操作,但没有任何效果

实际上,从1个表加载10K需要4秒,从另外5秒开始,如果我将这2个表保持在队列中,则需要9秒。这意味着我的代码没有并行运行


如何改善性能问题?

好的,您必须使用ParaTime功能在线查询更多信息

可能有多种方法

我的建议是:

  • 将表视图的行数设置为精确计数(在您的情况下为10k)
  • 表格视图经过优化,在开始时仅创建少量单元格(遵循拉动模式)。因此,cellForRowAtIndexPath在开始时只调用几次
  • 拥有一个数组,在开始时只获取50个条目。有一个计数器变量
  • 当用户滚动表格视图,计数达到50后,获取下50个项目(所需时间将非常少),并用下50个数据填充单元格。 继续做同样的事情

希望它能起作用。

您应该分块获取记录(即在表中一次获取50-60条记录)。然后,当用户到达表的末尾时,再加载50-60条记录。请尝试使用此库:


关于并行性,请使用GCD,并在GCD的成功块调用时重新加载相应的表。

请帮助我它的紧迫性涉及IO时没有真正的并行化:/CAPS LOCK键似乎卡住了。您好,谢谢您的回答,您能给我举个例子,比如如何获取下一个50项吗。实际上,我正在编写类似“select*from table”的查询。我可以在这种情况下应用您的概念吗?是的,您可以在tableview委托中:CellForRowatineXpath检查如下内容:if(indexPath.row==计数器变量){//fetch next 50 and append in your mutable array}。。。。。。对于每页获取50个数据,您可以使用select*from table limit 50,对于下一次使用select*from table limit 50100,依此类推(查询时不太确定请查看更多web)。