При тестировании мобильного гибридного приложения, которое я имел, я заметил, что производительность на iOS была намного хуже по сравнению с Android устройством. При дальнейшей проверке выясняется, что IndexedDB стал причиной большинства моих проблем Я также использую PouchDB с IndexedDB, но результаты теста представлены в чистом IndexedDB.
В тесте, который я сделал, я создал 1 objectStore, который содержал 1000 строк простых данных (простые пары ключ / значение). Я также открываю objectStores, которые не содержат документов с шагом 25. При создании хранилищ я также вызываю database.close()
в dbRequest.onsuccuess
на всякий случай, если оставить открытым магазин вызвало какие-либо проблемы. (не уверен, что мне нужно, хотя)
Тест просто запускается objectStore.get(key)
1000 раз. После удаления 10 самых значимых значений из каждого набора данных, они учитываются в этом графике.
Диаграмма производительности различных устройств, использующих IndexedDB
Из этого графика видно, что IndexedDB на iOS 13 имеет свою производительность, резко снижающую количество открываемых в магазине объектов. линейная скорость. При 150 объектных хранилищах для iOS 13 на iPhone Xs Max я записываю время + 40 мс на objectStore.get(key)
, где, как и на моем Android устройстве для того же теста, оно было стабильным 3 мс. Даже на iOS 12, работающем на iPhone 6, objectStore.get(key)
все еще соответствует 2,5 мс. Та же тенденция наблюдается в PouchDB, когда я заново создаю тест с дополнительными издержками.
Похоже, что проблема затрагивает как веб-приложения, так и гибридные мобильные приложения. Поскольку на устройствах iOS 13 есть эта проблема, а также на моем настольном Safari 13. Мне интересно, сталкивался ли кто-то еще с этими проблемами производительности как на устройствах iOS13, так и / или Safari 13, или я просто что-то не так делаю на своем компьютере? end?
edit:
Вот график, который включает производительность PouchDB, которая и вызвала мое первоначальное расследование. PouchDB потребовалось + 130 мс для iPhone Xs Max для pouchDB.find () для завершения и + 60 мс для Desktop Safari 13.
Диаграмма производительности различных устройств с IndexedDB и PouchDB