0

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

我目前这样做的方式(这可能是完全低效的):

  • 我将列表分解为 26 个数组,每个字母一个,然后将每个数组放入它自己的 javascript 文件中。
  • 当应用程序加载时,它运行一个递归函数,该函数获取下一个 js 文件并从它加载到数组中,覆盖前一个。然后,它遍历整个数组并将每个新单词加载到我的Trie数据结构中。
  • 包含数组的文件组合在 2mb 左右。合并后,数据结构本身的时钟约为 12mb,这在台式计算机上还算不错,但确实让我的几个用户的智能手机不堪重负。

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

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

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

您是否尝试过分析您的代码?

于 2013-01-25T20:56:33.930 回答