cloning an object

JavaScript performance comparison

Revision 135 of this test case created by vlodko

Preparation code

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.5/angular.min.js"></script>

      
<script>
Benchmark.prototype.setup = function() {
  var oldObject = {
  	type: "segments",
  	settings: {
  		size: "lg",
  		segmentModal: true,
  		searchType: "segments",
  		windowClass: "segment-modal search-modal-window",
  		templateUrl: "segment-manager-view/segment-modal-template.html"
  	},
  	label: "report.build.segments",
  	actions: [
  		{
  			label: "controls.modify",
  			description: "report.build.addSegmentDescription",
  			content: "report/builder/add-segment"
  		}
  	],
  	options: {
  		headerText: "report.config.selectSegments",
  		searchPlaceholderText: "report.build.searchSegments",
  		actionButtonText: "report.config.addSegment",
  		maximumSelectable: 1,
  		headerColSize: 5
  	}
  };
  
    function cloneObject(obj) {
      if (obj === null || typeof obj !== 'object') {
          return obj;
      }
   
      var temp = obj.constructor(); // give temp the original obj's constructor
      for (var key in obj) {
          temp[key] = cloneObject(obj[key]);
      }
   
      return temp;
  }
   

};
</script>

Preparation code output

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.5/angular.min.js"></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
jQuery.extend() deep
var i = 10000;

while(i--) {
var newObject = jQuery.extend(true, {}, oldObject);
}
pending…
JSON stringify/parse
var i = 10000;

while(i--) {
var newObject = JSON.parse(JSON.stringify(oldObject));
}
pending…
angular.copy()
var i = 10000;

while(i--) {
var newObject = angular.copy({}, oldObject);
}
pending…
own clone function
var i = 10000;

while(i--) {
var newObject = cloneObject(oldObject);
}
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.

0 Comments