function calls: direct vs apply vs call vs bind
JavaScript performance comparison
Preparation code
<script>
Benchmark.prototype.setup = function() {
function f() {
return this;
}
var that = {
f: f
};
var bound = f.bind(that);
var that2 = Object.create(that);
var that3 = {};
var that4 = Object.create(that3);
function A() {
this.bar = "bar";
}
A.prototype.foo = function () {
return this.bar;
}
function B () {
}
B.prototype = Object.create(A.prototype);
B.prototype.constructor = B;
var b = new B();
var bound = A.prototype.foo.bind(b);
};
</script>
Test runner
Warning! For accurate results, please disable Firebug before running the tests. (Why?)
Java applet disabled.
Test | Ops/sec | |
---|---|---|
call
|
|
pending… |
bind
|
|
pending… |
bound
|
|
pending… |
bind
|
|
pending… |
prototype
|
|
pending… |
direct (dynamic property)
|
|
pending… |
prototype (dynamic property)
|
|
pending… |
Compare results of other browsers
Revisions
You can edit these tests or add even more tests to this page by appending /edit
to the URL.
- Revision 1: published
- Revision 2: published Stuart Carnie
- Revision 3: published Stuart Carnie
- Revision 4: published
- Revision 5: published
- Revision 6: published
- Revision 8: published
- Revision 9: published
- Revision 10: published
- Revision 11: published and last updated
- Revision 12: published
- Revision 13: published
- Revision 14: published drkibitz
- Revision 15: published
- Revision 16: published
- Revision 17: published Ger Hobbelt
- Revision 18: published Ger Hobbelt
- Revision 19: published Eamon Nerbonne
- Revision 21: published
- Revision 22: published
- Revision 23: published
- Revision 24: published
- Revision 25: published
- Revision 26: published
- Revision 27: published
- Revision 28: published
- Revision 29: published
- Revision 30: published npjohns
- Revision 31: published
- Revision 32: published
- Revision 33: published Marcin
- Revision 35: published
- Revision 36: published harry
- Revision 37: published
- Revision 38: published
- Revision 39: published
- Revision 40: published
- Revision 44: published
- Revision 45: published
- Revision 46: published
- Revision 48: published Thomas Jensen
- Revision 49: published
- Revision 51: published Roland
- Revision 52: published
- Revision 53: published test
- Revision 55: published
- Revision 56: published Cindy
- Revision 57: published acamus
- Revision 60: published Mark
- Revision 61: published
- Revision 62: published
- Revision 63: published bob
- Revision 64: published bob
- Revision 66: published
- Revision 67: published
- Revision 68: published Rezoner
- Revision 69: published
- Revision 70: published
- Revision 71: published
- Revision 72: published Jethro
- Revision 74: published
- Revision 75: published me
- Revision 76: published
- Revision 80: published lpinca
- Revision 81: published Roland Pihlakas
- Revision 82: published Roland Pihlakas
- Revision 83: published Roland Pihlakas
- Revision 84: published Marc
- Revision 85: published
- Revision 86: published
- Revision 87: published Arne Babenhauserheide
- Revision 88: published dcoderWar
- Revision 89: published
- Revision 90: published
- Revision 92: published
- Revision 93: published pusha
- Revision 94: published
- Revision 95: published
- Revision 97: published
- Revision 98: published David
- Revision 99: published Benoit
- Revision 100: published Ark
- Revision 101: published Ark
- Revision 102: published Ark
- Revision 103: published Ark
- Revision 104: published Ark
- Revision 106: published Carduelis
- Revision 107: published Grzegorz Michlicki
- Revision 108: published Grzegorz Michlicki
- Revision 109: published Grzegorz Michlicki
- Revision 110: published Grzegorz Michlicki
- Revision 111: published Grzegorz Michlicki
- Revision 112: published
0 Comments