1

フォームの約150のエントリを含むJSONオブジェクトがあり[key] : [sentence]、文には同じテキストが何度も含まれていることがよくあります。例えば:

var test = {
    "abc" : "This is the first sentence that is in this JSON object. Hello! Blue."
    "abd" : "Red. This is the second sentence that is in this JSON object. Hi!"
    "abe" : "This is the third sentence that is in this JSON object. Hey! Yellow."
    "abf" : "White. This is the fourte sentence that is in this JSON object. Hola!"
}

文字列「このJSONオブジェクトにある文」を確認できます。かなり頻繁に繰り返されます。オブジェクトからエントリを取得したら、アンカーに置き換えてからアンカーを置き換える方が効率的でしょうか?あれは:

var test = {
    "abc" : "This is the first #anchor# Hello!"
    "abd" : "This is the second #anchor# Hi!"
    "abe" : "This is the third #anchor# Hey!"
    "abf" : "This is the fourte #anchor# Hola!"
}

var anchor = "sentence that is in this JSON object."

そして、JSONから目的の値を取得したら、文字列を実際のテキストに置き換えますか?文には特定のパターンはありませんが、多くの文には繰り返しのテキスト文字列が含まれています。あなたの提案をありがとう!

4

3 に答える 3

1

基本的に、あなたは計算のための帯域幅の取引について話している。元のケースでは、より多くの帯域幅が必要であり、ダウンロード後の計算(文字列の置換)はありません。後者の場合、帯域幅は少なくなりますが、後処理を行う必要があります。

私にとって、ユースケースでこれに明確に答える唯一の方法は、2つのシナリオをテストし、どちらが最適かを判断することです。また、実行時間に対する帯域幅の可能なトレードオフがあなたがしたいものであるかどうかを決定する必要があります。

于 2013-03-20T21:40:57.947 に答える
0

エントリの数によっては、メモリやサーバーの帯域幅を節約できる場合がありますが、文を再構築するために必要な複雑さと処理能力に見合う価値はないと思います。

いずれにせよ、これは悪い最適化IMOです。重複する文字列を自然に処理するgzipなどの標準的な最適化を使用します。

于 2013-03-20T21:34:13.530 に答える
0

JSONダウンロードがgzipで圧縮されている場合(これは非常に可能性が高いです)、おそらく帯域幅をあまり節約できません。Gzip圧縮は、重複する文字列を削除するのに非常に優れています。

調べるには、JSONをファイルに入れ、Gzipユーティリティを使用してそこから.gzファイルを作成します。別のバージョンのJSONでも同じことを行い、2つの.gzファイルのサイズを比較します。違いが少ないことに驚かれるかもしれません。

Gzipユーティリティがない場合は、7-Zipを入手してください。

帯域幅はさておき、文字列を組み合わせることでブラウザのメモリを節約できます。それが価値があるかどうかは、私たちが話している文字列の数によって異なります。

于 2013-03-20T21:39:50.580 に答える