Hacker News new | ask | show | jobs
by siddontang 1409 days ago
Using map or array instead of switch-case is a common optimization way, but please do a benchmark if you have no confidence whether you need do or not.

E.g, it doesn't already work in Go, https://stackoverflow.com/questions/46789259/map-vs-switch-p...

But if there are too many switch-cases, the codes may be ugly to read, so maybe using a map or array is a better choice here.

1 comments

Wonder if that benchmark still holds true for Golang. Go 1.19 (released last week) includes jump table optimizations for switch statements.

https://go.dev/doc/go1.19#compiler

I just tested it:

1.18:

    BenchmarkMap-10         13388006                77.38 ns/op
    BenchmarkSwitch-10      50482033                23.00 ns/op
    BenchmarkSlice-10       100000000               10.90 ns/op
1.19:

    BenchmarkMap-10         14947908                76.78 ns/op
    BenchmarkSwitch-10      49444435                23.01 ns/op
    BenchmarkSlice-10       100000000               10.74 ns/op
edit: If I understand the release notes correctly the switch optimisations are only new for large integers and strings.