Toggle navigation
MeasureThat.net
Create a benchmark
Tools
Feedback
FAQ
Register
Log In
switch on object references
(version: 2)
Comparing performance of:
switch on string vs switch on object vs switch on number
Created:
one year ago
by:
Registered User
Jump to the latest result
Script Preparation code:
var AAA = {key: "AAA", idx: 0}; var BBB = {key: "BBB", idx: 1}; var CCC = {key: "CCC", idx: 2}; var DDD = {key: "DDD", idx: 3}; var EEE = {key: "EEE", idx: 4}; var arr = [AAA, BBB, CCC, DDD, EEE]; for (let i = 5; i < 1000; i++) { arr[i] = arr[i % 5]; }
Tests:
switch on string
var sum = 0; for (let i = 0; i < arr.length; i++) { switch (arr[i].key) { case "AAA": sum += 1; break; case "BBB": sum += 2; break; case "CCC": sum += 3; break; case "DDD": sum += 4; break; case "EEE": sum += 5; break; } }
switch on object
var sum = 0; for (let i = 0; i < arr.length; i++) { switch (arr[i]) { case AAA: sum += 1; break; case BBB: sum += 2; break; case CCC: sum += 3; break; case DDD: sum += 4; break; case EEE: sum += 5; break; } }
switch on number
var sum = 0; for (let i = 0; i < arr.length; i++) { switch (arr[i].idx % 5 | 0) { case 0: sum += 1; break; case 1: sum += 2; break; case 2: sum += 3; break; case 3: sum += 4; break; case 4: sum += 5; break; } }
Rendered benchmark preparation results:
Suite status:
<idle, ready to run>
Run tests (3)
Previous results
Fork
Test case name
Result
switch on string
switch on object
switch on number
Fastest:
N/A
Slowest:
N/A
Latest run results:
Run details:
(Test run date:
one year ago
)
User agent:
Mozilla/5.0 (X11; Linux x86_64; rv:131.0) Gecko/20100101 Firefox/131.0
Browser/OS:
Firefox 131 on Linux
View result in a separate tab
Embed
Embed Benchmark Result
Test name
Executions per second
switch on string
335853.3 Ops/sec
switch on object
745754.7 Ops/sec
switch on number
519284.7 Ops/sec
Related benchmarks:
object read vs write
object key vs indexof
Test for
Test for
Test for
For with and without external variables
for-in vs object.keys map array
Comments
Confirm delete:
Do you really want to delete benchmark?