【发布时间】:2014-03-20 12:53:28
【问题描述】:
此代码需要很长时间才能运行。我有大约 100,000 条记录。 每个步骤花费的时间大致相同......从 FMResultSet 获取结果并将其读入 3 个数组。我尝试使用两个选择语句。一个获取结果计数,然后在 mutableArray 中分配该数量。没有性能差异。有什么提高速度的建议吗?
FMResultSet *results = [database executeQuery:@"SELECT FriendlyName, Serial, Barcode FROM Inventory, Company WHERE Inventory.friendlyName <> '' AND Company.CompanyID = Inventory.companyID AND Company.CompanyName = ?", selectedCompany];
arrayFriendlyName =[[NSMutableArray alloc]init];
arraySerial = [[NSMutableArray alloc]init];
arrayBarcode = [[NSMutableArray alloc]init];
while([results next]) {
[arrayFriendlyName addObject:[results stringForColumn:@"FriendlyName"]];
[arrayBarcode addObject:[results stringForColumn:@"Barcode"]];
[arraySerial addObject:[results stringForColumn:@"Serial"]];
}
[database close];
【问题讨论】:
-
需要多少时间,对用户有害吗?我相信 100000 条记录会减慢这个过程。可以将任务发送到后台吗?
-
多项选择当然不会给您带来任何好处。如果你不愿意挂断你的 UI 线程,最好你可以像@Volker 所说的那样将任务执行到某个后台队列
-
对了,为什么一次需要1000,000条记录?为什么不在需要时延迟加载记录,否则会对您的应用造成严重的性能威胁?
-
总共需要大约 23 秒。
-
它会加载 100k 条记录,以便可以使用搜索栏搜索和查看它们。这是一个库存应用程序。
标签: ios objective-c nsmutablearray fmdb