パフォーマンスの違いを測定するためだけに、ブロッキングと非ブロッキングの方法で記述された、同じことを行う 2 つの小さな 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