Array.isArray vs instanceof Array vs toString (v17)

Revision 17 of this benchmark created by Sergij 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;
    var isArray    = function(val) {
      if (typeof val === 'boolean') return false;
      return val instanceof Array;
    };
    var isArray2   = function(val) {
      return val.constructor === Array;
    };

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
toString.call(arrayShort) === '[object Array]';
ready
toString arrayLong
toString.call(arrayLong) === '[object Array]';
ready
toString bool
toString.call(bool) === '[object Array]';
ready
toString element
toString.call(element) === '[object Array]';
ready
toString string
toString.call(string) === '[object Array]';
ready
toString text
toString.call(text) === '[object Array]';
ready
isArray(arrayShort);
isArray(arrayShort);
ready
isArray(arrayLong);
isArray(arrayLong);
ready
isArray(bool);
isArray(bool);
ready
isArray(element);
isArray(element);
ready
isArray(string);
isArray(string);
ready
isArray(text);
isArray(text);
ready
isArray2(arrayShort);
isArray2(arrayShort);
ready
isArray2(arrayLong);
isArray2(arrayLong);
ready
isArray2(bool);
isArray2(bool);
ready
isArray2(element);
isArray2(element);
ready
isArray2(string);
isArray2(string);
ready
isArray2(text);
isArray2(text);
ready
Coffeescript style(arrayShort)
'[object Array]' === Object.prototype.toString.call(arrayShort)
ready
Coffeescript style(arrayLong)
'[object Array]' === Object.prototype.toString.call(arrayLong)
ready
Coffeescript style(bool)
'[object Array]' === Object.prototype.toString.call(bool)
ready
Coffeescript style(element)
'[object Array]' === Object.prototype.toString.call(element)
ready
Coffeescript style(string)
'[object Array]' === Object.prototype.toString.call(string)
ready
Coffeescript style(text)
'[object Array]' === Object.prototype.toString.call(text)
ready

Revisions

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