4

indexeddb オブジェクト ストアに多くのオブジェクトを格納しようとしています。すべてのオブジェクトは、 のような同じ構造を持っています{somekey: xxx, somevalue: yyy}

オブジェクト キーの長さは、保存されるデータのサイズに影響しますか? たとえば、構造を に変更した場合{s: xxxx, v: yyyy}、現在のブラウザでオブジェクト ストアのフットプリントが改善されると期待できますか?

標準のどこにもこれに関する情報が見つからなかったので、辞書を内部で使用するかどうかはブラウザーの実装次第だと思います。現在の実装方法と、最適化に値するかどうかについて知りたいですストア オブジェクトのキーのサイズを縮小します。

4

1 に答える 1

1

はい、影響します。ただし、少なくとも妥当なサイズのキーの場合、非常に大規模 (数百万レコード) でない限り、1 文字対 10 または 20 文字でパフォーマンスに違いはありません。ほとんどの実装(私が話すことができるクロムを含む)は、キー名を含む完全なオブジェクトを保存しますが、インデックスは「キーパス」を一度だけ保存します..

つまり、{"foo": "bar"} の格納にはおそらく 12 バイト程度かかります (文字列ごとに約 4 バイトと型情報のオーバーヘッドが必要ですが、"foo" の後続のインデックスは "baz" のみを格納します。

{"foobarbaz": "helloworld"} は、保存におそらく ~23 バイトかかります。実際、ほとんどの状況では、独自のデータがキーの長さのオーバーヘッドを上回り、数バイトを節約するためにキーを短くしようとするのは時期尚早の最適化だと思います。

于 2012-09-11T16:11:40.473 に答える