Manual clone versus prototype extend
Date tested:
8 years ago
User agent:
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.116 Safari/537.36
Test name
Executions per second
Manual clone
9802892.0 Ops/sec
Prototype
1620940.2 Ops/sec
Benchmark definition (click to collapse):
Script Preparation code:
var MergeState = (function () { function MergeState() { this.writeVersion = 0; this.deepInspect = false; } MergeState.prototype.derive1 = function () { var ret = new MergeState(); ret.writeVersion = this.writeVersion; ret.deepInspect = this.deepInspect; return ret; }; MergeState.prototype.derive2 = function () { var ret = {}; Object.setPrototypeOf(ret, this); return ret; }; return MergeState; }()); var base = new MergeState();
Tests:
Manual clone
var der = base.derive1();
Prototype
var der = base.derive2();
Open this result on MeasureThat.net