搜尋

首頁  >  問答  >  主體

node.js - nodejs效能好差

我是初學,發現nodejs 表現好差! ! !

var rd=require('rd');
var files = rd.readSync('/home');
// 异步遍历目录下的所有文件
rd.each('/home', function (f, s, next) {
  // 每找到一个文件都会调用一次此函数
  // 参数s是通过 fs.stat() 获取到的文件属性值
  console.log('file: %s', f);
  // 必须调用next()才能继续
  next();
}, function (err) {
  if (err) throw err;
  // 完成
});

用上面的程式碼,遍歷home目錄中的全部文件,/home下面只有14萬個文件,nodejs會卡死,跑到中間就死了。
python 40秒可以全部將檔案印在console上。

nodejs還有學習的必要嗎?

下面這段程式碼來至stackoverflow.

var fs = require('fs');
var path = require('path');

var walk = function(directoryName) {
  fs.readdir(directoryName, function(e, files) {
    files.forEach(function(file) {
      fs.stat(directoryName + path.sep + file, function(e, f) {
        if (f.isDirectory()) {
          walk(directoryName + path.sep + file)
        } else {
          console.log(' - ' + file)
        }
      })
    })
  })
}

walk("/home")

同樣卡死,nodejs沒有任何效能優勢,是劣勢,運行慢點不可怕,它會卡死! ! ! !

过去多啦不再A梦过去多啦不再A梦2756 天前1335

全部回覆(3)我來回復

  • 代言

    代言2017-06-20 10:08:41

    我覺得樓主沒有進行深入的思考就妄加評論一門語言。
    readSync 是同步方法 ,其碰到大文件一次讀取 內存會爆掉,所以就會讓你覺得卡死了,
    正確的方式應該是使用 stream 流的形式進行文件的讀寫。

    回覆
    0
  • 欧阳克

    欧阳克2017-06-20 10:08:41

    你用node內建模組fs去遍歷吧。

    回覆
    0
  • PHP中文网

    PHP中文网2017-06-20 10:08:41

    node最大的優勢是異步,但是你用的是同步的方法

    回覆
    0
  • 取消回覆