Array.isArray vs instanceof Array vs toString (v10)

Revision 10 of this benchmark created by Ingvar Stepanyan on


Description

Test speed of Array.isArray added in 1.85

Setup

var arrayShort = [1, 2, 3];
    var arrayLong  = new Array(1000);
    var bool       = false;
    var element    = document.createElement('span');
    var string     = "random string";
    var text       = document.createTextNode('text node');
    var toString   = Object.prototype.toString;

Test runner

Ready to run.

Testing in
TestOps/sec
Array.isArray arrayShort
Array.isArray(arrayShort);
ready
Array.isArray arrayLong
Array.isArray(arrayLong);
ready
Array.isArray bool
Array.isArray(bool);
ready
Array.isArray element
Array.isArray(element);
ready
Array.isArray string
Array.isArray(string);
ready
Array.isArray text
Array.isArray(text);
ready
instanceof arrayShort
arrayShort instanceof Array;
ready
instanceof arrayLong
arrayLong instanceof Array;
ready
instanceof bool
bool instanceof Array;
ready
instanceof element
element instanceof Array;
ready
instanceof string
string instanceof Array;
ready
instanceof text
text instanceof Array;
ready
toString arrayShort
arrayShort instanceof Array || toString.call(arrayShort) === '[object Array]';
ready
toString arrayLong
arrayLong instanceof Array || toString.call(arrayLong) === '[object Array]';
ready
toString bool
bool instanceof Array || toString.call(bool) === '[object Array]';
ready
toString element
element instanceof Array || toString.call(element) === '[object Array]';
ready
toString string
string instanceof Array || toString.call(string) === '[object Array]';
ready
toString text
text instanceof Array || toString.call(text) === '[object Array]';
ready
toString with no call
arrayLong instanceof Array || Object.prototype.toString.call(arrayLong) === '[object Array]';
ready

Revisions

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