eval vs loop

JavaScript performance comparison

Revision 2 of this test case created

Preparation code

<script>
  var namespace = {
    dogs: {
      cats: {
        coyotes: function() {
          if (!this.test) throw "fail";
        },
        test: 1
      }
    }
  },
      arr = ['dogs', 'cats', 'coyotes'];
</script>

Test runner

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

Java applet disabled.

Testing in unknown unknown
Test Ops/sec
loop
for (var i = 0, l = arr.length, o = namespace, p; i < l; i++) {
  p = o;
  o = o[arr[i]];
}

p.o();
pending…
eval
eval('namespace.' + arr.join('.') + '()')
pending…
eval with
with(namespace) eval(arr.join('.') + '()')
pending…
forEach
var o = namespace,
    p;
arr.forEach(function(e) {
  p = o;
  o = o[e];
})

p.o();
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