mergeDeepRight vs _.cloneDeep vs structuredClone vs spread

Benchmark created on


Preparation HTML

<script src="https://cdnjs.cloudflare.com/ajax/libs/ramda/0.29.0/ramda.min.js" integrity="sha512-5x/n+aOg68Z+O/mq3LW2pC2CvEBSgLl5aLlOJa87AlYM1K8b8qsZ7NTHLe3Hu56aS2W0rgEgVCFA3RM12IXAGw==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.21/lodash.min.js" integrity="sha512-WFN04846sdKMIP5LKNphMaWzU7YpMyCU245etK3g/2ARYbPK9Ub18eG+ljU96qKRCWh+quCY7yefSmlkQw1ANQ==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>

Setup

var voucher = {
    "single": false,
    "applyOverTaxes": false,
    "discountType": "1",
    "value": 100,
    "minimumAmount": 0,
    "quantity": 1,
    "suffixLength": 8,
    "code": "IF5R0AFX",
    "vertical": [],
    "allowedPaymentMethods": [],
    "allowedBanks": [],
    "types": [],
    "partners": [],
    "startDate": "2020-10-21T00:00:00.000Z",
    "endDate": "2020-10-21T00:00:00.000Z",
    "applyed": false
}

Test runner

Ready to run.

Testing in
TestOps/sec
R.mergeDeepRight
const copy = R.mergeDeepRight({}, voucher);
ready
Lodash cloneDeep
const copy = _.cloneDeep(voucher);
ready
structuredClone
const copy = window.structuredClone(voucher);
ready
Spread operator
const copy = { ...voucher };
ready
Object.assign
const copy = Object.assign({}, voucher );
ready

Revisions

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