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>
var GS = {};
GS.pubSub = function() {
var subscribers = {},
persistentEvents = {};
this.on = function(ev, fn) {
var events = ev.split(",");
events.forEach(function(ev) {
ev = jQuery.trim(ev);
if(typeof subscribers[ev] === "undefined") {
subscribers[ev] = [];
}
subscribers[ev].push(fn);
if(persistentEvents.hasOwnProperty(ev)) {
fn.apply(null, persistentEvents[ev]);
}
});
};
this.once = function(ev, fn) {
var called = false,
callback = function(arg) {
arg = arg || [];
if(!called) {
fn.apply(null, arguments);
called = true;
}
};
GS.on(ev, callback);
};
this.fire = function(ev, arg, persist) {
arg = arg || [];
if(typeof subscribers[ev] !== "undefined") {
subscribers[ev].forEach(function(current) {
current.apply(null, arg);
});
}
if(persist) {
persistentEvents[ev] = arg;
}
};
return this;
};
/* Set up global event queue, hanging pubsub functions on GS */
GS.pubSub.call( GS );
</script>
<script src='//cdnjs.cloudflare.com/ajax/libs/jquery/1.8.3/jquery.min.js'></script>
<script src='//underscorejs.org/underscore.js'></script>
<script src='//cdnjs.cloudflare.com/ajax/libs/backbone.js/0.9.2/backbone-min.js'></script>
<script>var oldEvents = Backbone.Events;</script>
<script src='//cdnjs.cloudflare.com/ajax/libs/backbone.js/0.5.3/backbone-min.js'></script>
<script>var olderEvents = Backbone.Events;</script>
<script src='//backbonejs.org/backbone.js'></script>
<script>var masterEvents = Backbone.Events;</script>
old = _.extend({}, oldEvents);
older = _.extend({}, olderEvents);
master = _.extend({}, masterEvents);
jquery = $({});
numEvents = 3;
numListeners = 100;
_.times(numEvents, function(event) {
_.times(numListeners, function() {
older.bind("event" + event, function(){});
old.on("event" + event, function(){});
jquery.on("event" + event, function(){});
master.on("event" + event, function(){});
GS.on("event" + event, function() {});
});
});
Ready to run.
Test | Ops/sec | |
---|---|---|
jQuery 1.8.3 |
| ready |
Backbone 0.5.3 |
| ready |
Backbone 0.9.2 |
| ready |
Backbone 0.9.9 |
| ready |
GS |
| ready |
You can edit these tests or add more tests to this page by appending /edit to the URL.