JSON.parse vs eval

JavaScript performance comparison

Test case created by Oliver Caldwell

Preparation code

<script>
  function parse(json) {
   // Check that the JSON string is okay
   if (/^[\],:{}\s]*$/.test(json.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, '@').replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']').replace(/(?:^|:|,)(?:\s*\[)+/g, ''))) {
    // It is, parse and return
    return eval('(' + json + ')');
   }
   else {
    // It is not, throw an error
    throw new SyntaxError('Invalid JSON');
   }
  }
  
  var str = JSON.stringify({
   someArray: ['foo', 'bar', 123],
   someObject: {
    foo: 'bar',
    embedded: {
     eleet: 1337
    }
   },
   someString: '"Hi there!"',
   someNumber: 123,
   someBoolean: true
  });
</script>
    

Test runner

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

Java applet disabled.

Testing in CCBot 2.0.0 / Other 0.0.0
Test Ops/sec
JSON.parse
JSON.parse(str);
pending…
eval
parse(str);
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.

1 Comment

kkk commented :

nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn