鍍金池/ 問答/網(wǎng)絡(luò)安全  HTML/ 為什么wget命令下載url會比用node.js的http模塊request下載

為什么wget命令下載url會比用node.js的http模塊request下載快那么多?

嘗試用request模塊(https://www.npmjs.com/package...)寫了一個(gè)下載目標(biāo)url的腳本,request是基于http模塊API封裝的(https://nodejs.org/api/http.h...,應(yīng)該沒有額外的開銷。

但是發(fā)現(xiàn)比用系統(tǒng)自帶的wget下載,速度慢太多了,而且越來越慢。

這背后是什么原因呢?

回答
編輯回答
陪她鬧

wget 使用 c 語言,而 nodejs 使用 javascript 語言。

c 語言運(yùn)行前得編譯成機(jī)器指令,而 javascript 是在運(yùn)行時(shí)通過解釋器把腳本轉(zhuǎn)換成機(jī)器指令。
這造成絕大部分情況下,c 語言的性能優(yōu)于 javascript。


另外,下載大文件(GB及以上)時(shí),不能使用類似于下面的代碼

var request = require('request');
request('http://xxx', function (error, response, body) {
    // ...
});

這很可能造成內(nèi)存枯竭,應(yīng)該采用流處理,如

request('http://xxx').pipe(fs.createWriteStream('xxx'))
2018年9月17日 22:17