apply vs call vs invoke (v12)

Revision 12 of this benchmark created on


Setup

function fn(a,b,c,d) {return a+b+c+d;}
    var obj = {fn:fn};

Test runner

Ready to run.

Testing in
TestOps/sec
apply
function fn(a,b,c,d) {return a+b+c+d;}
var obj = {fn:fn};
fn.apply(obj, ['a','b','c','d']);
ready
call
function fn(a,b,c,d) {return a+b+c+d;}
var obj = {fn:fn};
fn.call(obj, 'a', 'b', 'c', 'd');
ready
invoke
function fn(a,b,c,d) {return a+b+c+d;}
var obj = {fn:fn};
obj.fn = fn;
obj.fn('a','b','c','d');
delete obj.fn;
ready
apply (undef)
function fn(a,b,c,d) {return a+b+c+d;}
var obj = {fn:fn};
fn.apply(undefined, ['a','b','c','d']);
ready
call (undef)
function fn(a,b,c,d) {return a+b+c+d;}
var obj = {fn:fn};
fn.call(undefined, 'a', 'b', 'c', 'd');
ready
invoke (undef)
function fn(a,b,c,d) {return a+b+c+d;}
var obj = {fn:fn};
fn('a','b','c','d');
ready
my invoke
 
ready
my invoke2
 
ready

Revisions

You can edit these tests or add more tests to this page by appending /edit to the URL.