我敲了两个小 node.js 片段,它们做同样的事情,以阻塞和非阻塞方式编写,只是为了测量性能差异。开始:
非阻塞(传统的 node.js 方式):
var http = require('http');
var fs = require('fs');
var app = http.createServer(function(req, res){
fs.readFile('lorem.txt',function(err, data){
res.end(data);
});
});
app.listen(8080);
阻塞:
var http = require('http');
var fs = require('fs');
var app = http.createServer(function (req, res) {
res.end(fs.readFileSync('lorem.txt'));
});
app.listen(8080);
lorem.txt
只是一个大约 33kb 大小的文本文件。
apache benchmark
对两者运行显示没有区别,或者有时阻塞版本的性能更好。
ab -n 100 -c 10 http://locahost:8080/
阻塞:Time per request: 5.701 ms
非阻塞:Time per request: 8.401 ms