12

HTML localStorage を利用する小さなプロジェクトを構築していました。localStorage の 5 MB の制限にはほど遠い状態でしたが、とにかくストレス テストを行うことにしました。

基本的に、データ オブジェクトを 1 つの localStorage オブジェクトにロードして、その制限をわずかに下回るまで、さまざまな項目の設定と取得を要求する必要がありました。

次に、javascript の Date オブジェクトとイベント ハンドラーを使用して、非公式に setItem と getItem の実行時間を計測しました(HTML で get と set をボタンにバインドし、=P をクリックしただけです)。

パフォーマンスは恐ろしく、リクエストは 600 ミリ秒から 5,000 ミリ秒かかり、メモリ使用量は最悪の場合 200 MB 近くになりました。これは、MacOSX 上の単一の拡張機能 (Google Speed Tracer) を備えた Google Chrome にありました。

Safari では、基本的に常に >4,000ms です。

Firefox は驚きで、150 ミリ秒を超える速度はほとんどありませんでした。

これらはすべて、基本的にアイドル状態で行われました。邪魔になる YouTube (Flash) はなく、多くのタブはなく (Gmail 以外は何もありません)、バックグラウンド プロセスとブラウザ以外のアプリケーションは開いていません。メモリを集中的に使用するタスクが発生すると、それに比例して localStorage も遅くなりました。FWIW、私は 2008 年後半の Mac -> 2GB DDR3 RAM を搭載した 2.0Ghz Duo Core を実行しています。

===

だから質問:

  1. さまざまなキーと値のサイズ、およびさまざまなブラウザーで、localStorage の get と set に対してある種のベンチマークを行った人はいますか?
  2. 私は、Firefox とその他の間のレイテンシとメモリ使用量の大きな差異は、Gecko と Webkit の問題であると想定しています。これらのコードベースに飛び込むことで答えが見つかることは知っていますが、ブラウザ間の効率とレイテンシの大きな違いを説明するために、これら 2 つのエンジンでの localStorage の実​​装に関する詳細を他の誰かが説明できるかどうかを知りたいです。 ?

残念ながら、問題を解決できるかどうかは疑問ですが、少なくともブラウザの現在の状態での制限を理解することで、解決に近づくことができます。

ありがとう!

4

1 に答える 1

2

ここでは、ブラウザとバージョンが大きな問題になります。問題は、いわゆる「Webkit ベース」のブラウザーがある一方で、独自のパッチも追加していることです。メインの Webkit リポジトリに入れることもあれば、入れないこともあります。バージョンに関しては、ブラウザーは常にターゲットを移動しているため、ベータ版またはナイトリー ビルドを使用する場合、このベンチマークはまったく異なる可能性があります。

次に、全体的なユースケースがあります。ユースケースが標準的でない場合、問題はそれほど明白ではなく、気付かれて対処される可能性は低くなります。パッチがあっても、ブラウザー ベンダーには対処すべき問題がたくさんあるため、別のビルドに設定される可能性があります (繰り返しますが、ナイトリー ビルドでは異なる結果が生じる可能性があります)。

正直なところ、まだ対処されていない場合は、適切なブラウザのメーリング リスト/フォーラムでこれらの結果について話し合うことが最善の方法です。人々はテストを行い、結果が一致するかどうかを確認する可能性が高くなります.

于 2011-05-11T19:51:43.197 に答える