Javascript 提高大数据量字典查找的性能

Javascript 提高大数据量字典查找的性能,javascript,json,node.js,performance,Javascript,Json,Node.js,Performance,在将大量字符串与字典(转换为JSON并按起始字母拆分成文件)进行比较时,我的性能很差 JSON文件当前存储在如下目录中: words/ a.json b.json ... z.json 我的代码中的输入字符串'test'将产生以下字符串数组 [ 'test', 'tes', 'tet', 'te', 'tst', 'ts', 'tt', 't', 'est', 'es', 'et', 'e', 'st', 's

在将大量字符串与字典(转换为JSON并按起始字母拆分成文件)进行比较时,我的性能很差

JSON文件当前存储在如下目录中:

words/
    a.json
    b.json
    ...
    z.json
我的代码中的输入字符串
'test'
将产生以下字符串数组

[ 'test',
  'tes',
  'tet',
  'te',
  'tst',
  'ts',
  'tt',
  't',
  'est',
  'es',
  'et',
  'e',
  'st',
  's',
  'tets',
  'tts',
  'ets',
  'tset',
  'tse',
  'set',
  'se',
  'tste',
  'tte',
  'ste',
  'ttes',
  'ttse',
  'etst',
  'ett',
  'etts',
  'estt',
  'stt',
  'stet',
  'stte',
  'sett' ]
为了确定要读取哪些文件,我通过字母表循环检查输入字符串中存在哪些字母(
'test'
),例如:

为上述示例读取的文件将是
t.json、e.json、s.json

上述示例的计算时间仅为~0.08s,但随着数组中字符串的数量和处理的文件数的增加,计算时间会迅速增加

看到这个例子时,您是否想到了任何即时的性能提升?我应该使用数据库吗?以字母开头将JSON拆分成文件是错误的选择吗?欢迎所有答案


谢谢你阅读这篇文章

当然,评估JSON文件的速度会很慢。评估大量大型JSON文件甚至更慢

您将有更好的运气查看HTML5Web数据库()。据我所知,这目前只适用于Webkit浏览器,但它将及时全面实施

另一种选择是,放弃JSON,转而使用更容易解析的东西,这会使情况有所改善——但不要指望这会带来神奇的结果。如果要存储大量数据并进行查找,则需要一个真正的数据库


一个更好的选择是去掉所有的客户端数据库逻辑,使用AJAX调用服务器端的东西在SQL数据库中查找。

我建议使用正则表达式匹配字符,如果通过UI搜索,可以将搜索取消到约300-500毫秒。我不想把客户端和服务器分开,主要是因为这是一个免费的开源项目。我的问题是:使用SQLite数据库(或等效数据库)而不是JSON文件是否会获得显著的性能?对于上下文,而不是自我提升:“引人注目”比您得到的要少几个数量级。切换到SQLite确实提高了性能,我将此标记为公认的答案。谢谢你的帮助!
var i;
['a', 'b', ..., 'z'].forEach(function(letter) {
    i = input.indexOf(letter);
    if(i !== -1) {
        // letter exists, process [letter].json
        // avoid reading the same file twice
        input[i] = '';
    }
});