Throughput metric tracking

This commit is contained in:
kpdecker
2013-08-25 14:16:12 -05:00
parent ab64fec1a8
commit b488af39f1
2 changed files with 97 additions and 104 deletions
-104
View File
@@ -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();
+97
View File
@@ -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);
});
};