isArray vs. instanceof vs. {}.toString

JavaScript performance comparison

Revision 5 of this test case created by alFReD NSH

Preparation code

<script src="http://documentcloud.github.com/underscore/underscore-min.js"></script>

<script>
  var isArray = Array.isArray;

  var toString = {}.toString;

  var a = [];
  var b = [1, 2, 3];
  var c = {};
  var d = 'string';
  var e = 2.3;
  var f = undefined;
  var g = null;
  var h = new Date();
</script>

Preparation code output

Test runner

Warning! For accurate results, please disable Firebug before running the tests. (Why?)

Java applet disabled.

Testing in unknown unknown
Test Ops/sec
isArray
var r = [
isArray(a), isArray(b), isArray(c), isArray(d), isArray(e), isArray(f), isArray(g), isArray(h)

];
pending…
instanceof
var r = [
a instanceof Array, b instanceof Array, c instanceof Array, d instanceof Array, e instanceof Array, f instanceof Array, g instanceof Array, h instanceof Array];
pending…
toString()
var r = [
toString.call(a) === '[object Array]', toString.call(b) === '[object Array]', toString.call(c) === '[object Array]', toString.call(d) === '[object Array]', toString.call(e) === '[object Array]', toString.call(f) === '[object Array]', toString.call(g) === '[object Array]', toString.call(h) === '[object Array]'];
pending…
underscore.isArray
var r = [
_.isArray(a), _.isArray(b), _.isArray(c), _.isArray(d), _.isArray(e), _.isArray(f), _.isArray(g), _.isArray(h)

];
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. Here’s a list of current revisions for this page:

0 comments

Add a comment