angular.copy vs lodash.clone (v6)

Revision 6 of this benchmark created on


Preparation HTML

<script src="//rawgithub.com/lodash/lodash/2.4.1/dist/lodash.min.js"></script>
<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.2.9/angular.min.js"></script>
<script src="//code.jquery.com/jquery-git2.min.js"></script>

Setup

var obj_to_clone = [{
           a: 1,
           b: 2,
           c: 3,
           d: 4,
           e: 5,
           f: function() {
            return 6;
           },
           g: [7, 8, 9]
          }];
    var len = 1000;

Test runner

Ready to run.

Testing in
TestOps/sec
angular.copy
for (var i = 0; i < len; ++i) {
  var clone_obj = angular.copy(obj_to_clone);
}
ready
lodash.clone
for (var i = 0; i < len; ++i) {
  var clone_obj = _.clone(obj_to_clone, true);
}
ready
lodash.cloneDeep
for (var i = 0; i < len; ++i) {
  var clone_obj = _.cloneDeep(obj_to_clone);
}
ready
jQuery.extend deep
for (var i = 0; i < len; ++i) {
  var clone_obj = $.extend(true, {}, obj_to_clone);
}
ready
angular toJson
for (var i = 0; i < len; ++i) {
  var clone_obj = angular.toJson(obj_to_clone);
  clone_obj = angular.fromJson(obj_to_clone);
}
ready
JSON.stringify
for (var i = 0; i < len; ++i) {
  var clone_obj = JSON.stringify(obj_to_clone);
  clone_obj = JSON.parse(clone_obj);
}
ready

Revisions

You can edit these tests or add more tests to this page by appending /edit to the URL.