Toggle navigation
MeasureThat.net
Create a benchmark
Tools
Feedback
FAQ
Register
Log In
Run results for:
Observable values
Go to the benchmark
Embed
Embed Benchmark Result
Run details:
User agent:
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.6.1 Safari/605.1.15
Browser:
Safari 17
Operating system:
Mac OS X 10.15.7
Device Platform:
Desktop
Date tested:
one year ago
Test name
Executions per second
Vanilla stay same
12871792.0 Ops/sec
Vanilla change
12711511.0 Ops/sec
Observed stay same
509878496.0 Ops/sec
Observed change
12529439.0 Ops/sec
HTML Preparation code:
<div id="foo"></div>
Script Preparation code:
var element = document.getElementById("foo"); class Observed { constructor(onChange) { this._onChange = onChange; } get value() { return this._val; } set value(val) { if (this._val !== val) { this._val = val; this._onChange(this._val); } } } var obs = new Observed(val => { element.setAttribute("visibility", "hidden"); }); obs.value = 5; var val = 5;
Tests:
Vanilla stay same
val = val; element.setAttribute("visibility", "hidden");
Vanilla change
val++; element.setAttribute("visibility", "hidden");
Observed stay same
obs.value = obs.value;
Observed change
obs.value++;