【发布时间】:2011-04-13 04:38:10
【问题描述】:
我正在构建一个使用 HTML localStorage 的小项目。虽然我还没有接近 localStorage 的 5MB 限制,但我还是决定进行压力测试。
基本上,我将数据对象加载到单个 localStorage 对象中,直到它略低于该限制,并且必须请求设置和获取各种项目。
然后我非正式地定时执行 setItem 和 getItem using the javascript Date object 和事件处理程序(将 get 和 set 绑定到 HTML 中的按钮,然后单击 =P)
性能非常糟糕,请求需要 600 毫秒到 5,000 毫秒,在更糟糕的情况下,内存使用量接近 200mb。这是在 MacOSX 上的带有单个扩展程序(Google Speed Tracer)的 Google Chrome 中。
在 Safari 中,基本上都是 >4,000 毫秒。
Firefox 是一个惊喜,几乎没有超过 150 毫秒。
这些都是在基本空闲状态下完成的 - 没有 YouTube (Flash) 妨碍,标签不多(除了 Gmail),除了后台进程 + 浏览器之外没有打开任何应用程序。一旦出现内存密集型任务,localStorage 也会相应地减慢速度。 FWIW,我正在运行 2008 年末的 Mac -> 2.0Ghz Duo Core 和 2GB DDR3 RAM。
===
所以问题:
- 是否有人针对各种不同的键和值大小以及在不同的浏览器上针对 localStorage get 和 set 进行了各种基准测试?
- 我假设 Firefox 和其他系统之间的延迟和内存使用量差异很大,这是 Gecko 与 Webkit 的问题。我知道可以通过深入研究这些代码库找到答案,但我绝对想知道是否有人可以解释有关在这两个引擎上实现 localStorage 的相关细节,以解释跨浏览器的效率和延迟的巨大差异?
不幸的是,我怀疑我们能否解决这个问题,但至少可以了解浏览器在当前状态下的局限性。
谢谢!
【问题讨论】:
-
您介意展示您使用的代码吗?在我的负载测试中,我获得了比这更高的速度,但我从未测量过数据库的底层大小。
标签: html webkit local-storage gecko