【问题标题】:IndexedDB performance degrades with number of objectStores on IOS 13IndexedDB 性能随着 IOS 13 上的 objectStore 数量而下降
【发布时间】:2020-07-04 11:52:19
【问题描述】:

在测试我拥有的移动混合应用时,我注意到 iOS 上的性能比 Android 设备上的性能要差得多。经过进一步检查,似乎是 IndexedDB 引起了我的大部分问题。我也在使用 PouchDB 和 IndexedDB,但这里的测试结果是在纯 IndexedDB 中完成的。

在我做的测试中,我创建了 1 个包含 1000 行简单数据(简单键/值对)的 objectStore。我还以 25 为增量打开不包含任何文档的 objectStores。在创建商店时,我还确保在 dbRequest.onsuccuess 中调用 database.close(),以防打开商店导致任何问题。 (不确定我是否需要)

测试只运行objectStore.get(key) 1000 次。从每组数据中删除前 10 个异常值后,将其编入此图中。

Performance Chart of different devices using IndexedDB

从这张图可以看出,iOS 13 上的 IndexedDB 的性能显着降低了我以线性速率打开的 objectStore 越多。在 iPhone Xs Max 上的 iOS 13 的 150 个 objectStores 中,我每 objectStore.get(key) 记录的时间为 +40 毫秒,而在我的 Android 设备上进行相同的测试,它是一致的 3 毫秒。即使在 iPhone 6 上运行的 iOS 12 上,objectStore.get(key) 仍然是一致的 2.5 毫秒。当我用更多开销重新创建测试时,PouchDB 中也会出现同样的趋势。

该问题似乎同时影响网络应用和混合移动应用。因为在 iOS 13 设备上以及我的桌面 Safari 13 上都有这个问题。 我想知道是否有其他人在 iOS13 设备和/或 Safari 13 上都遇到过这些性能问题,或者我只是做错了什么?

编辑:

这是一张包含 PouchDB 性能的图表,这是我最初调查的原因。 PouchDB 在 iPhone Xs Max 上完成 pouchDB.find() 花费了 +130 毫秒,在 Desktop Safari 13 上花费了 +60 毫秒。

Performance Chart of Different devices with IndexedDB and PouchDB

【问题讨论】:

    标签: ios iphone performance safari indexeddb


    【解决方案1】:

    Safari 13.4 更新解决了 indexedDB 的性能问题。

    【讨论】:

      猜你喜欢
      • 2014-04-15
      • 1970-01-01
      • 2018-06-08
      • 1970-01-01
      • 2018-09-22
      • 2010-10-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多