jsPerf.app is an online JavaScript performance benchmark test runner & jsperf.com mirror. It is a complete rewrite in homage to the once excellent jsperf.com now with hopefully a more modern & maintainable codebase.
jsperf.com URLs are mirrored at the same path, e.g:
https://jsperf.com/negative-modulo/2
Can be accessed at:
https://jsperf.app/negative-modulo/2
<script src="http://documentcloud.github.com/underscore/underscore-min.js"></script>
<script src="http://yui.yahooapis.com/3.6.0/build/yui/yui-min.js"></script>
<script>
var Y = YUI().use('escape', 'handlebars', function (Y) {
Y.Get.script('https://raw.github.com/rgrove/yui3/template/src/template/js/template-micro.js');
});
</script>
var yuiTemplate = "<ul class='<%=classNames.list%>'><% for (var i=0, len=items.length; i < len; i++) { %><li class='item'><%=items[i]%></li><% } %></ul>";
var yuiTemplateNoWith = "<ul class='<%=data.classNames.list%>'><% for (var i=0, len=data.items.length; i < len; i++) { %><li class='item'><%=data.items[i]%></li><% } %></ul>";
var handlebarsTemplate = "<ul class='{{classNames.list}}'>{{#items}}<li class='item'>{{.}}</li>{{/items}}</ul>";
var underscoreTemplate = "<ul class='<%-classNames.list%>'><% for (var i=0, len=items.length; i < len; i++) { %><li class='item'><%-items[i]%></li><% } %></ul>";
var underscoreTemplateNoWith = "<ul class='<%-data.classNames.list%>'><% for (var i=0, len=data.items.length; i < len; i++) { %><li class='item'><%-data.items[i]%></li><% } %></ul>";
var compiledYUI = Y.Template.Micro.compile(yuiTemplate);
var compiledYUINoWith = Y.Template.Micro.compile(yuiTemplateNoWith, {variable: 'data'});
var compiledHandlebars = Y.Handlebars.compile(handlebarsTemplate);
var compiledUnderscore = _.template(underscoreTemplate);
var compiledUnderscoreNoWith = _.template(underscoreTemplateNoWith, null, {variable: 'data'});
var data = {
classNames: {list: 'test-list'},
items: ['foo', 'bar', "'baz'", '<quux>', 'cats & dogs', 'monkeys & bananas']
};
Ready to run.
Test | Ops/sec | |
---|---|---|
[precompiled] Underscore |
| ready |
[precompiled] Y.Template.Micro |
| ready |
[precompiled] Y.Handlebars |
| ready |
[precompiled, no with] Underscore |
| ready |
[precompiled, no with] Y.Template.Micro |
| ready |
[compile + render] Underscore |
| ready |
[compile + render] Y.Template.Micro |
| ready |
[compile + render] Y.Handlebars |
| ready |
You can edit these tests or add more tests to this page by appending /edit to the URL.