From b488af39f1e6564202822612e121a967f6a86417 Mon Sep 17 00:00:00 2001 From: kpdecker Date: Sun, 25 Aug 2013 14:16:12 -0500 Subject: [PATCH] Throughput metric tracking --- bench/handlebars.js | 104 -------------------------------------------- bench/throughput.js | 97 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 97 insertions(+), 104 deletions(-) delete mode 100644 bench/handlebars.js create mode 100644 bench/throughput.js diff --git a/bench/handlebars.js b/bench/handlebars.js deleted file mode 100644 index 9ccffacc..00000000 --- a/bench/handlebars.js +++ /dev/null @@ -1,104 +0,0 @@ -var BenchWarmer = require("./util/benchwarmer"); -Handlebars = require("../lib/handlebars"); - -var dust, Mustache, eco; - -try { - dust = require("dustjs-linkedin"); -} catch (err) { /* NOP */ } - -try { - Mustache = require("mustache"); -} catch (err) { /* NOP */ } - -try { - var ecoExports = require("eco"); - eco = function(str) { - return ecoExports(str); - }; -} catch (err) { /* NOP */ } - -var benchDetails = require('./templates'); - -var handlebarsTemplates = {}, - ecoTemplates = {}; - -var warmer = new BenchWarmer(); - -function makeSuite(name) { - warmer.suite(name, function(bench) { - var templateName = name; - var details = benchDetails[templateName]; - var mustachePartials = details.partials && details.partials.mustache; - var mustacheSource = details.mustache; - var context = details.context; - var options = {helpers: details.helpers}; - - var error = function() { throw new Error("EWOT"); }; - - bench("handlebars", function() { - handlebarsTemplates[templateName](context, options); - }); - - if (dust) { - if (details.dust) { - bench("dust", function() { - dust.render(templateName, context, function(err, out) { }); - }); - } else { - bench('dust', error); - } - } - - if (eco) { - if(ecoTemplates[templateName]) { - bench("eco", function() { - ecoTemplates[templateName](context); - }); - } else { - bench("eco", error); - } - } - - if (Mustache) { - if (mustacheSource) { - bench("mustache", function() { - Mustache.to_html(mustacheSource, context, mustachePartials); - }); - } else { - bench("mustache", error); - } - } - }); -} - -for(var name in benchDetails) { - if(benchDetails.hasOwnProperty(name)) { - if (!benchDetails[name].handlebars) { - continue; - } - - if (dust && benchDetails[name].dust) { - dust.loadSource(dust.compile(benchDetails[name].dust, name)); - } - - handlebarsTemplates[name] = Handlebars.compile(benchDetails[name].handlebars); - - if (eco && benchDetails[name].eco) { - ecoTemplates[name] = eco(benchDetails[name].eco); - } - - var partials = benchDetails[name].partials; - if(partials) { - for(var partialName in partials.handlebars) { - if(partials.handlebars.hasOwnProperty(partialName)) { - Handlebars.registerPartial(partialName, partials.handlebars[partialName]); - } - } - } - - makeSuite(name); - } -} - -warmer.bench(); diff --git a/bench/throughput.js b/bench/throughput.js new file mode 100644 index 00000000..3a018cd6 --- /dev/null +++ b/bench/throughput.js @@ -0,0 +1,97 @@ +var _ = require('underscore'), + BenchWarmer = require('./util/benchwarmer'), + templates = require('./templates'), + + eco, dust, Handlebars, Mustache, eco; + +try { + dust = require("dustjs-linkedin"); +} catch (err) { /* NOP */ } + +try { + Mustache = require("mustache"); +} catch (err) { /* NOP */ } + +try { + eco = require("eco"); +} catch (err) { /* NOP */ } + +function error() { + throw new Error("EWOT"); +} + +function makeSuite(warmer, name, template) { + warmer.suite(name, function(bench) { + // Create aliases to minimize any impact from having to walk up the closure tree. + var templateName = name, + + context = template.context, + partials = template.partials; + + var handlebar = Handlebars.compile(template.handlebars), + options = {helpers: template.helpers}; + _.each(template.partials && template.partials.handlebars, function(partial, name) { + Handlebars.registerPartial(name, partial); + }); + + bench("handlebars", function() { + handlebar(context, options); + }); + + if (dust) { + if (template.dust) { + dust.loadSource(dust.compile(template.dust, templateName)); + + bench("dust", function() { + dust.render(templateName, context, function(err, out) { }); + }); + } else { + bench('dust', error); + } + } + + if (eco) { + if (template.eco) { + var ecoTemplate = eco(template.eco); + + bench("eco", function() { + ecoTemplate(context); + }); + } else { + bench("eco", error); + } + } + + if (Mustache) { + var mustacheSource = template.mustache, + mustachePartials = partials && partials.mustache; + + if (mustacheSource) { + bench("mustache", function() { + Mustache.to_html(mustacheSource, context, mustachePartials); + }); + } else { + bench("mustache", error); + } + } + }); +} + +module.exports = function(grunt, callback) { + // Deferring load incase we are being run inline with the grunt build + Handlebars = require('../lib/handlebars'); + + var warmer = new BenchWarmer(); + + _.each(templates, function(template, name) { + if (!template.handlebars) { + return; + } + + makeSuite(warmer, name, template); + }); + + warmer.bench(function() { + callback && callback(warmer.times); + }); +};