我是初學,發現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沒有任何效能優勢,是劣勢,運行慢點不可怕,它會卡死! ! ! !
代言2017-06-20 10:08:41
我覺得樓主沒有進行深入的思考就妄加評論一門語言。
readSync 是同步方法 ,其碰到大文件一次讀取 內存會爆掉,所以就會讓你覺得卡死了,
正確的方式應該是使用 stream 流的形式進行文件的讀寫。