Guest User

Untitled

a guest
Jan 23rd, 2018
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.06 KB | None | 0 0
  1. package main
  2.  
  3. import "fmt"
  4. import "time"
  5. import "math/rand"
  6.  
  7. var jumpTable = [32]func(){
  8. noop, noop, noop, noop,
  9. noop, noop, noop, noop,
  10. noop, noop, noop, noop,
  11. noop, noop, noop, noop,
  12. noop, noop, noop, noop,
  13. noop, noop, noop, noop,
  14. noop, noop, noop, noop,
  15. noop, noop, noop, noop,
  16. }
  17.  
  18. func noop() {
  19. }
  20.  
  21. func runJumpTable(code []uint32) {
  22. for _, c := range code {
  23. jumpTable[c]()
  24. }
  25. }
  26.  
  27. func runSwitch(code []uint32) {
  28. for _, c := range code {
  29. switch c {
  30. case 0:
  31. case 1:
  32. case 2:
  33. case 3:
  34. case 4:
  35. case 5:
  36. case 6:
  37. case 7:
  38. case 8:
  39. case 9:
  40. case 10:
  41. case 11:
  42. case 12:
  43. case 13:
  44. case 14:
  45. case 15:
  46. case 16:
  47. case 17:
  48. case 18:
  49. case 19:
  50. case 20:
  51. case 21:
  52. case 22:
  53. case 23:
  54. case 24:
  55. case 25:
  56. case 26:
  57. case 27:
  58. case 28:
  59. case 29:
  60. case 30:
  61. case 31:
  62. }
  63. }
  64. }
  65.  
  66. func main() {
  67. var code [5000]uint32
  68. for i := 0; i < 5000; i++ {
  69. code[i] = rand.Uint32() % 32
  70. }
  71.  
  72. t := time.Now()
  73. runSwitch(code[:])
  74. fmt.Println("switch cost:", time.Since(t))
  75.  
  76. t = time.Now()
  77. runJumpTable(code[:])
  78. fmt.Println("jumt table cost:", time.Since(t))
  79. }
Add Comment
Please, Sign In to add comment