利用Grinder对使用await的web服务做负载测试,并以只使用callback的web服务作为对照.

  • 测试环境: Linux Centos虚拟机 单核
  • 测试参数:
    • grinder.processes=7
    • grinder.thread = 3
    • grinder.runs=600
       
  • 测试结果:callback和await在并发性能上并无显著差异
  •  callbackawait
    平均响应时间毫秒34.834.4
    平均TPS519568
    峰值TPS637685
    CPU峰值23%23%
    测试总次数1260012600

 

源码如下:

server-with-callback.js

(function() {
  var http, sleep;

  http = require('http');

  sleep = function(callback) {
    return setTimeout(function() {
      return callback('wakeup');
    }, 30);
  };

  http.createServer(function(req, res) {
    sleep(function(msg){
       res.end(msg);
    });
  }).listen(8080);

}).call(this);

server-with-await.js

(function() {
  var aaa, http, sleep, wrapper;

  http = require('http');

  sleep = function(callback) {
    return setTimeout(function() {
      return callback('wakeup');
    }, 30);
  };

  http.createServer(async function(req, res) {
      var msg = await new Promise(function(resolve, reject){
          sleep(function(msg) {
             resolve(msg);
          });
      });
      res.end(msg);
  }).listen(8080);

}).call(this);
Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐