jQuery $.extend vs. JSON.parse

JavaScript performance comparison

Revision 3 of this test case created by d

Preparation code

<script src="//ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
 
<script>
Benchmark.prototype.setup = function() {
    var parent = {
      one: 1,
      two: 2,
      arr: [1, 2],
      obj: { one: 1, two: 2 },
      deep: {
        one: {
          two: {
             three: {
                four: 4
             }
          }
        }
      }
    }
   
    function copy(o) {
       if (o instanceof Array) {
         var out = [];
       } else {
         var out = {};
       }
       for (var key in o) {
           var v    = o[key];
           out[key] = (typeof v === "object") ? copy(v) : v;
       }
       return out;
    }
   
   
    function copy2(o) {
       var out = Array.isArray(o) ? [] : {};
       for (var key in o) {
           var v    = o[key];
           out[key] = (typeof v === "object") ? copy2(v) : v;
       }
       return out;
    }
};
</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
jQuery
var child = $.extend(true, {}, parent);
pending…
JSON.parse
var child = JSON.parse(JSON.stringify(parent));
pending…
copy (instanceof)
var child = copy(parent);
pending…
copy Array.isArray
var child = copy2(parent);
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