node.js - Node 文件行数

标签 node.js asynchronous

我收到反馈称该 Node 函数在获取文件行数时存在性能问题,但无法查明确切的详细信息。

function countFileLines(filePath){
  return new Promise((resolve, reject) => {
  let lineCount = 0;
  fs.createReadStream(filePath)
    .on("data", (buffer) => {
      buffer.forEach((chunk) => {
        if (chunk === 10) lineCount++;
      });
    }).on("end", () => {
      resolve(lineCount);
    }).on("error", reject);
  });
};

是否有更高效的方法来获取 Node 中文件的行数?

最佳答案

function countFileLines(filePath){
  return new Promise((resolve, reject) => {
  let lineCount = 0;
  let i = 0;
  fs.createReadStream(filePath)
    .on("data", (buffer) => {
      for (i = 0; i < buffer.length; ++i) {
        if (buffer[i] == 10) lineCount++;
      }
    }).on("end", () => {
      resolve(lineCount);
    }).on("error", reject);
  });
};

比较:

原文:node index.js 2.38s 用户 0.29s 系统 98% cpu 2.713 总计

修改: Node index2.js 0.18s 用户 0.04s 系统 96% cpu 0.225 总计

关于node.js - Node 文件行数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41439217/

相关文章:

node.js - NightmareJS脚本执行错误

javascript - Node 在执行代码之前等待所有异步调用

node.js - 异步读取 csv 文件 - NodeJS

python - 扭曲而简单的插件开发

c# - 如果在套接字关闭后调用 Socket.BeginSend,则应用程序崩溃而不会抛出异常

javascript - 无法运行 selenium WebDriver JavaScript 绑定(bind)

javascript - 从文件中读取并查找特定行

C# .NET 4、如何将任务完成结果传递给另一个方法?

javascript - 无法使用 Postman 创建用户 - Nodemon 应用程序崩溃

node.js - 我们将验证逻辑放在 NodeJs MVC 中的哪里?