更有效的方法来构建/传输大型数据结构?

时间:2013-01-25 19:49:14

标签: javascript node.js

我正在使用node.js构建一个移动的Boggle类型的网络应用程序。我正在尝试找到一种更有效的方法来加载/构建一个庞大的字典(180,000+个单词)。我目前有它工作,但加载时间稍长。用户必须等待大约15秒才能构建整个内容,并且一些用户在整个内容加载之前会超时。我想知道是否有人有任何提高速度的提示。

我目前正在这样做的方式(可能完全没效率):

  • 我将列表分解为26个数组,每个字母一个,并将每个数组插入其自己的javascript文件中。
  • 当应用程序加载时,它会运行一个递归函数,该函数获取下一个js文件,并从中覆盖前一个js文件。然后,它遍历整个数组并将每个新单词加载到我的Trie数据结构中。
  • 其中包含数组的文件大约为2mb。合并后,数据结构本身的时钟频率为12mb,这在台式电脑上并没有那么糟糕,但确实会影响我的几个用户的智能手机。

这需要在客户端构建,以允许即时查找。我现在这样做的方式有效,但我知道必须有更好的方法。

2 个答案:

答案 0 :(得分:0)

另一个策略是将递归代码转换为使用显式堆栈的非递归代码,只保存实际需要的对象。

您是否尝试过分析代码?

答案 1 :(得分: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.
  })
}