2017-09-01 58 views
1

我有两套代码和gona用来获取结果,我只想知道两种方法都可以做到。对模块V的性能影响节点中的类

//dataService.js 

module.exports = { 
getData: function(){// return data from some sync source} 
} 

const DataService = require(‘./dataService’); 
console.log(DataService.getData()); 

另一种方式

//dataService.js 
var DataService = Class DataService { 
    getData(){/return data from some sync source} 
} 
module.exports = DataService 

const DataService = require(‘./dataService’); 
console.log((new DataService()).getData()); 

请帮助我了解,这两个代码是优良的性能和旁观者而言,当我们把负载超过100万级的要求。

+0

你没有真正使用类作为一类,所以我不认为使用一个(尤其是当你实例化它为每个请求)的点。 – robertklep

回答

0

我做了一个标杆得到以下结果:

Class Data x 22,047,798 ops/sec ±0.88% (88 runs sampled) 
Data as module x 31,695,587 ops/sec ±0.97% (89 runs sampled) 

最快的是数据的模块

结果是相当合乎逻辑的,你需要每次都实例化类与new模块同样内存消耗会更高,新类正在以原型链接返回实例。

基准代码:

const Benchmark = require('benchmark'); 

const moduleData = require('./modules/module-data'); 
const ClassData = require('./modules/class-data'); 

var suite = new Benchmark.Suite; 

// add tests 
suite.add('Class Data', function() { 
    new ClassData().getData(); 
}) 
    .add('Data as module', function() { 
    moduleData.getData(); 
    }) 
    // add listeners 
    .on('cycle', function (event) { 
    console.log(String(event.target)); 
    }) 
    .on('complete', function() { 
    console.log('Fastest is ' + this.filter('fastest').map('name')); 
    }) 
    // run async 
    .run({ 'async': true });