IndexedDB访问速度和效率

时间:2014-03-22 11:49:51

标签: performance hashmap dart game-engine indexeddb

我正在使用Dart开发RPG,我将使用IndexedDB进行数据持久化。

我将有两个数据库:一个用于只读访问,另一个用于读写访问,其中将存储保存游戏。我只是想知道我是否应该直接从数据库中读取所需数据或将其缓存在Maps中。我可能有几百条记录需要从只读数据库(敌人,游戏地图等)中提取,而我从数据库中提取所有内容的效率可能低于使用Dart的地图。

哦,每个数据库也会存储在地图中。对象商店将是该地图内的嵌套地图。

我应该直接从数据库中读取,还是应该将所有内容放入地图并从那里读取?

编辑:忘记提及,只读数据库将使用位于用户计算机上的JSON文件中的数据进行初始化,而不是通过AJAX进行初始化。

2 个答案:

答案 0 :(得分:5)

我确信数百条记录在IndexedDB中不会出现任何问题。 IDB的设计考虑到了这种规模,其异步API - 虽然让初学者感到烦恼 - 确保您的应用程序在设计上保持响应。

我正在开发一个旨在进一步推动IDB的演示,并为您提供一些易于访问的统计信息。这些是在数据库的单个商店中的单个索引上获得的。

在IndexedDB中获取速度非常快。 IDB的大规模问题通常是写作。

一千个成功的回调,一个完整的回调,是次秒的:

enter image description here

一万次成功回调,一次完整的回调,大概是5秒钟:

enter image description here

在不到一分钟的时间内发出了超过五万个成功回调:

enter image description here

写入速度要慢得多 - 一开始是突发性的,但是在几分钟之后会慢下来,而在几小时后狗会慢下来。这与任何架构有关,但你可能在位置上有多个索引(至少我想象的是纬度和经度),所以你的写入速度会特别慢(索引越多,主要的工作就越多)在插入和更新中。)

上面统计信息的布局(与统计信息本身一样重要,请确保根据您需要访问它的方式设计架构):

enter image description here enter image description here enter image description here

答案 1 :(得分:0)

我会使用直接数据库访问,然后监控性能,然后优化可预期收益的预期位置。过早优化很少是一个好主意。