var Benchmark = require('benchmark'),

escodegen = require('../'),
old = require('./old.js'),
esotope = require('esotope'),
asts = require('./asts');

function cycle(codegen) {

for (var i = 0; i < asts.length; i++)
    codegen.generate(asts[i]);

}

new Benchmark.Suite()

.add('esotope', function () {
    cycle(esotope);
})

.add('escodegen', function () {
    cycle(escodegen);
})

.add('old', function () {
    cycle(old);
})

.on('start', function () {
    console.log('Benchmarking...')
})

.on('cycle', function (event) {
    console.log(event.target.toString());
})

.on('complete', function () {
    console.log('Fastest is ' + this.filter('fastest').pluck('name'));

    console.log('esotope is x' + (this[0].hz / this[1].hz).toFixed(2) + ' times faster vs escodegen.');
})

.run();