Производительность IndexedDB снижается с количеством объектов objectStores на IOS 13 - PullRequest
1 голос
/ 24 марта 2020

При тестировании мобильного гибридного приложения, которое я имел, я заметил, что производительность на 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

...