0

node.js を使用してモバイル Boggle 型の Web アプリを構築しています。大規模な辞書(180,000語以上)をロード/構築するより効率的な方法を見つけようとしています。現在動作していますが、ロード時間が少し長いです。ユーザーは全体がビルドされるまで約 15 秒待たなければならず、一部のユーザーは全体がロードされる前にタイムアウトします。誰かが速度を改善するためのヒントを持っているかどうか疑問に思っていました。

私が現在これを行っている方法(おそらく完全に非効率的です):

  • リストを 26 個の配列 (文字ごとに 1 つ) に分割し、各配列を独自の JavaScript ファイルに貼り付けました。
  • アプリが読み込まれると、再帰関数が実行され、次の js ファイルが取得され、そこから配列が読み込まれ、前のファイルが上書きされます。次に、配列全体をループして、新しい単語をそれぞれトライ データ構造に読み込みます。
  • 配列を組み合わせたファイルは約 2 MB です。組み合わせた後、データ構造自体は約 12 MB でクロックインします。これはデスクトップ コンピューターではそれほど悪くはありませんが、私のユーザーのスマートフォンの数を減らします。

これは、即座にルックアップできるようにクライアント側で構築する必要があります。私が現在行っている方法は機能しますが、より良い方法が必要であることはわかっています。

4

2 に答える 2

0

最速の読み込み時間の質問に答えるために、この方法でそれを行っていますか? (別名、コードがなければ、おそらく知ることはできません)

function LoadFiles(fileArray){
  file = fileArray.slice(); //get the first file.
  $.ajax(file).success(function(data){
    /* yes, my object is a little funky, I'm focused on writing pseudocode */
    wordLibraryAdd(data);

    if (fileArray.length) // on a zero length quit processing
    setTimeout(function(){ LoadFiles(fileArray) }, 50) //a 50 ms buffer between each loading isn't bad.
  })
}
于 2013-01-25T22:03:26.430 に答える
0

もう 1 つの方法は、再帰コードを明示的なスタックを使用する非再帰コードに変換し、実際に必要なオブジェクトだけを保存することです。

コードのプロファイリングを試しましたか?

于 2013-01-25T20:56:33.930 に答える