0

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

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

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

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

如何改善性能问题?

4

3 回答 3

3

可能有多种方法可以做到这一点。

我的建议是:

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

希望它有效。

于 2013-04-25T12:19:23.280 回答
0

您应该以块的形式获取记录(即一次在表中获取 50-60 条记录)。然后当用户到达表的末尾时加载另外 50 -60 条记录。试试这个库:Bottom Pull to refresh more data in a UITableView

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

于 2013-04-29T07:55:41.297 回答
-2

好的,您必须使用ParaTime函数在线查找更多信息

于 2013-04-25T11:33:01.937 回答