Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package main
- import "fmt"
- import "time"
- import "math/rand"
- var jumpTable = [32]func(){
- noop, noop, noop, noop,
- noop, noop, noop, noop,
- noop, noop, noop, noop,
- noop, noop, noop, noop,
- noop, noop, noop, noop,
- noop, noop, noop, noop,
- noop, noop, noop, noop,
- noop, noop, noop, noop,
- }
- func noop() {
- }
- func runJumpTable(code []uint32) {
- for _, c := range code {
- jumpTable[c]()
- }
- }
- func runSwitch(code []uint32) {
- for _, c := range code {
- switch c {
- case 0:
- case 1:
- case 2:
- case 3:
- case 4:
- case 5:
- case 6:
- case 7:
- case 8:
- case 9:
- case 10:
- case 11:
- case 12:
- case 13:
- case 14:
- case 15:
- case 16:
- case 17:
- case 18:
- case 19:
- case 20:
- case 21:
- case 22:
- case 23:
- case 24:
- case 25:
- case 26:
- case 27:
- case 28:
- case 29:
- case 30:
- case 31:
- }
- }
- }
- func main() {
- var code [5000]uint32
- for i := 0; i < 5000; i++ {
- code[i] = rand.Uint32() % 32
- }
- t := time.Now()
- runSwitch(code[:])
- fmt.Println("switch cost:", time.Since(t))
- t = time.Now()
- runJumpTable(code[:])
- fmt.Println("jumt table cost:", time.Since(t))
- }
Add Comment
Please, Sign In to add comment