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
To test performance of jQuery template for outputting 100 rows each with 10 columns where the columns have fields that can trigger events.
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js">
</script>
<script src="https://github.com/andyet/ICanHaz.js/raw/master/ICanHaz.min.js">
</script>
<script src="http://cloud.github.com/downloads/wycats/handlebars.js/handlebars-1.0.0.beta.6.js" type="text/javascript"></script>
<script type="text/javascript">
$(function() {
$('body').delegate('#table .edit a, #table .select a', 'click', function() {
var $td = $(this).closest('td');
$td.find('input, select').show();
$td.find('a').hide();
});
$('body').delegate('#table .edit .cancel, $table .select .cancel', 'click', function() {
var $td = $(this).closest('td');
$td.find('input, select').hide();
$td.find('a').show();
});
});
</script>
<script type="text/x-handlebars-template" id="handlebarsTmpl">
{{#each rows}}
{{#with this}}
< tr > < td > < input type = "checkbox"
value = "{{id}}" / > < /td>
<td>{{firstName}} {{lastName}}</td > < td class = "edit" > < a > Edit < /a>
<input style="display:none;" type="hidden" value="Blah" / > < input class = "cancel"
type = "button"
value = "cancel" / > < /td>
<td class="select">
<a>Select</a > < select style = "display:none;" > < option > 0 < /option>
<option>1</option > < option > 2 < /option>
<option>3</option > < option > 4 < /option>
<option>5</option > < option > 6 < /option>
<option>7</option > < option > 8 < /option>
<option>9</option > < option > 10 < /option>
</select > < input class = "cancel"
type = "button"
value = "cancel" / > < /td>
<td>More string</td > < td > More string < /td>
<td>More string</td > < td > More string < /td>
<td>More string</td > < td > More string < /td>
</tr >
{{/with}}
{{/each}}
</script>
<script type="text/html" id="icanhazTmpl">
{{#rows}}
< tr > < td > < input type = "checkbox"
value = "{{id}}" / > < /td>
<td>{{firstName}} {{lastName}}</td > < td class = "edit" > < a > Edit < /a>
<input style="display:none;" type="hidden" value="Blah" / > < input class = "cancel"
type = "button"
value = "cancel" / > < /td>
<td class="select">
<a>Select</a > < select style = "display:none;" > < option > 0 < /option>
<option>1</option > < option > 2 < /option>
<option>3</option > < option > 4 < /option>
<option>5</option > < option > 6 < /option>
<option>7</option > < option > 8 < /option>
<option>9</option > < option > 10 < /option>
</select > < input class = "cancel"
type = "button"
value = "cancel" / > < /td>
<td>More string</td > < td > More string < /td>
<td>More string</td > < td > More string < /td>
<td>More string</td > < td > More string < /td>
</tr >
{{/rows}}
</script>
<script>
var data = [];
for (var i = 0; i < 100; i++) {
var row = {
id: i,
firstName: 'john',
lastName: 'doe'
};
data.push(row);
}
$.template("savedTmpl", document.getElementById("tmplRow").innerHTML);
var handlebarsTmpl = Handlebars.compile($("#handlebarsTmpl").html());
</script>
Ready to run.
Test | Ops/sec | |
---|---|---|
handlebars |
| ready |
icanhaz |
| ready |
| ready |
You can edit these tests or add more tests to this page by appending /edit to the URL.