iOS CloudKit медленно запрашивает тяжелый CKAsset (даже с QoS) - PullRequest
2 голосов
/ 05 мая 2019

Я использую CloudKit для загрузки моделей CoreML (машинного обучения).Они около 90 МБ каждый.У меня есть открытая база данных и зона по умолчанию с одним пользовательским типом записи «ML».Я запрашиваю этот «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 Ответ

2 голосов
/ 10 мая 2019

Я переключился на Firebase Storage для тестирования, и результат был немного быстрее, но не намного быстрее. rmdaddy и TommyBs были правы: CloudKit может быть немного медленнее, потому что вам нужно запросить запись, но загрузка идет с такой же скоростью.

Мое окончательное решение состояло в том, чтобы использовать Firebase Storage, так как легко обрабатывать процесс загрузки, а затем показывать его в пользовательском интерфейсе для ожидания пользователя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...