Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 读取和解析Node.js中数字ASCII对文件的最快方法是什么?_Javascript_Node.js - Fatal编程技术网

Javascript 读取和解析Node.js中数字ASCII对文件的最快方法是什么?

Javascript 读取和解析Node.js中数字ASCII对文件的最快方法是什么?,javascript,node.js,Javascript,Node.js,我正在使用Node.js读取和解析一个成对编码数字的文件。我有这样一个文件: 1561 0506 1204 900 6060 44 [[1561,0506],[1204,900],[6060,44]] 我想把它读作一个数组,如下所示: 1561 0506 1204 900 6060 44 [[1561,0506],[1204,900],[6060,44]] 为此,我使用了readStream,将文件作为块读取,并使用本机字符串函数进行解析: fileStream.on("data",fu

我正在使用
Node.js
读取和解析一个成对编码数字的文件。我有这样一个文件:

1561 0506
1204 900
6060 44
[[1561,0506],[1204,900],[6060,44]]
我想把它读作一个数组,如下所示:

1561 0506
1204 900
6060 44
[[1561,0506],[1204,900],[6060,44]]
为此,我使用了
readStream
,将文件作为块读取,并使用本机字符串函数进行解析:

fileStream.on("data",function(chunk){
    var newLineIndex;
    file = file + chunk;
    while ((newLineIndex = file.indexOf("\n")) !== -1){
        var spaceIndex = file.indexOf(" ");
        edges.push([
            Number(file.slice(0,spaceIndex)),
            Number(file.slice(spaceIndex+1,newLineIndex))]);
        file = file.slice(newLineIndex+1);
    };
});
不过,这花了很多时间(我需要在我的机器上安装4s文件)。我看到一些原因:

  • 使用字符串
  • 使用“数字”
  • 数组的动态数组

  • 我重写了算法,没有使用内置的字符串函数,而是循环,令我惊讶的是,它变得慢多了!有什么方法可以让它更快吗?

    警告:我还没有测试这个解决方案的性能,但它是完整的,所以应该很容易尝试

    根据中的注释使用如何

    使用衬里:

    var fs = require('fs')
    var liner = require('./liner')
    
    var source = fs.createReadStream('mypathhere')
    source.pipe(liner)
    liner.on('readable', function () {
         var line
         while (line = liner.read()) {
              var parts = line.split(" ");
              edges.push([Number(parts[0]), Number(parts[1])]);
         }
    })
    
    如您所见,我还将边缘数组移动为一个内联常量大小的数组,与拆分部分分开,我猜这将加快分配速度。您甚至可以尝试使用indexOf(“”)而不是split(“”)进行交换


    除此之外,您还可以插入代码以识别任何进一步的瓶颈。

    您是否尝试过逐行读取文件而不是按字符索引?