iOS CloudKit查询繁重的CKAset速度很慢(即使使用QoS)

时间:2019-05-04 21:58:20

标签: swift cloudkit coreml

我正在使用CloudKit下载CoreML(机器学习)模型。它们每个大约90MB。我有一个带有自定义“ ML”记录类型的公共数据库和默认区域。 我通过id查询此“ ML”,并且需要一分钟多的时间才能在完成模块上得到响应(应该是几秒钟)。我已经尝试了生产环境,设置服务质量以及使用不同的查询方式来获得相同的结果(非常慢)。
我想知道我是否缺少某些东西,或者是否还有其他方法可以更快地下载ML模型?

这是我当前的代码:

let arrayPredicate = NSPredicate(format: "id == %@", id)
let query = CKQuery(recordType: "ML", predicate: arrayPredicate)


let queryOperation = CKQueryOperation(query: query)
queryOperation.qualityOfService = .userInteractive
queryOperation.resultsLimit = 1
queryOperation.recordFetchedBlock = { record in
  // This gets called +60 sec after
}

queryOperation.queryCompletionBlock = { record, error in
  // Same here
}

publicDB.add(queryOperation)

1 个答案:

答案 0 :(得分:2)

我切换到Firebase Storage进行测试,结果稍快一些,但没有快很多。 rmdaddyTommyBs恰好符合他们的想法:CloudKit可能会慢一些,因为您需要查询记录,但是下载速度却差不多。

我的最终解决方案是使用Firebase Storage,因为它很容易处理下载进度,然后将其显示在UI上供用户等待。