Toggle navigation
MeasureThat.net
Create a benchmark
Tools
Feedback
FAQ
Register
Log In
Object.setPrototypeOf vs Proxy initialization
(version: 1)
Comparing performance of:
Object.setPrototypeOf vs Proxy
Created:
one year ago
by:
Registered User
Jump to the latest result
HTML Preparation code:
<!--your preparation HTML code goes here-->
Script Preparation code:
class Car { constructor(make, model, year, mileage = 0, fuelLevel = 100) { this.make = make; this.model = model; this.year = year; this.mileage = mileage; this.fuelLevel = fuelLevel; } start() { console.log(`${this.make} ${this.model} is starting...`); } stop() { console.log(`${this.make} ${this.model} is stopping...`); } drive(distance) { if (this.fuelLevel > 0) { this.mileage += distance; this.fuelLevel -= distance * 0.05; // Assuming 1 unit of fuel per 20 miles console.log(`You drove ${distance} miles. Mileage is now ${this.mileage} miles.`); } else { console.log('Not enough fuel to drive.'); } } refuel(amount) { this.fuelLevel += amount; console.log(`Refueled ${amount}%. Fuel level is now ${this.fuelLevel}%.`); } getCarInfo() { return `${this.year} ${this.make} ${this.model}, Mileage: ${this.mileage} miles, Fuel Level: ${this.fuelLevel}%`; } } function createCar() { return new Car('Toyota', 'Corolla', 2021, 5000, 100); } function createProperties() { return { make: 'Toyota', model: 'Corolla', year: 2021, mileage: 5000, fuelLevel: 100 } } function createProto() { return { start: function() { console.log(`${this.make} ${this.model} is starting...`); }, stop: function() { console.log(`${this.make} ${this.model} is stopping...`); }, drive: function(distance) { if (this.fuelLevel > 0) { this.mileage += distance; this.fuelLevel -= distance * 0.05; // Assuming 1 unit of fuel per 20 miles console.log(`You drove ${distance} miles. Mileage is now ${this.mileage} miles.`); } else { console.log('Not enough fuel to drive.'); } }, refuel: function(amount) { this.fuelLevel += amount; console.log(`Refueled ${amount}%. Fuel level is now ${this.fuelLevel}%.`); }, getCarInfo: function() { return `${this.year} ${this.make} ${this.model}, Mileage: ${this.mileage} miles, Fuel Level: ${this.fuelLevel}%`; } } } function extendTarget(target, proto) { Object.setPrototypeOf(proto, Object.getPrototypeOf(target)) Object.setPrototypeOf(target, proto) return target } function createProxy(target) { return new Proxy(target, { get(target, key, receiver) { if (key in target) return Reflect.get(target, key, receiver) }, set(target, key, value, receiver) { target[key] = value; return true; } }) }
Tests:
Object.setPrototypeOf
const extended = extendTarget(createProperties(), createProto())
Proxy
const proxy = createProxy(createCar())
Rendered benchmark preparation results:
Suite status:
<idle, ready to run>
Run tests (2)
Previous results
Fork
Test case name
Result
Object.setPrototypeOf
Proxy
Fastest:
N/A
Slowest:
N/A
Latest run results:
Run details:
(Test run date:
one year ago
)
User agent:
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/132.0.0.0 Safari/537.36
Browser/OS:
Chrome 132 on Mac OS X 10.15.7
View result in a separate tab
Embed
Embed Benchmark Result
Test name
Executions per second
Object.setPrototypeOf
559652.3 Ops/sec
Proxy
20366116.0 Ops/sec
Related benchmarks:
Compare performance between 2 constructors pattern
Proxy setter with sub operation v. class
Proxy set performance
Proxies
Proxy vs defineProperty
making proxies vs defining getters properties
Object.setPrototypeOf vs Proxy - property access
Object.setPrototypeOf vs Proxy initialization (with baseline)
Object.setPrototypeOf vs Proxy - property access (with baseline)
Comments
Confirm delete:
Do you really want to delete benchmark?