Guest User

Untitled

a guest
Mar 21st, 2018
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.24 KB | None | 0 0
  1. package main
  2.  
  3. import (
  4. "fmt"
  5. "runtime"
  6.  
  7. "golang.org/x/text/language"
  8. "golang.org/x/text/message"
  9. )
  10.  
  11. var p = message.NewPrinter(language.English)
  12.  
  13. func profile(f func() string) {
  14. var mem runtime.MemStats
  15. runtime.GC()
  16. runtime.ReadMemStats(&mem)
  17. before := mem.Alloc
  18. title := f()
  19. runtime.ReadMemStats(&mem)
  20. after := mem.Alloc
  21. p.Printf("%s:%d bytes\n", title, after-before)
  22. }
  23.  
  24. func main() {
  25. var i, j int32
  26.  
  27. numUsers := int32(100000)
  28.  
  29. profile(func() string {
  30. v := map[int32]int32{}
  31. for i = 0; i < numUsers; i++ {
  32. v[i] = i
  33. }
  34. return fmt.Sprintf("%T", v)
  35. })
  36.  
  37. profile(func() string {
  38. v := map[uint16]uint16{}
  39. for i = 0; i < numUsers; i++ {
  40. v[uint16(i)] = uint16(i)
  41. }
  42. return fmt.Sprintf("%T", v)
  43. })
  44.  
  45. numUsers = int32(10000)
  46. max := int32(5000)
  47.  
  48. profile(func() string {
  49. v := map[int32]map[int32]float32{}
  50.  
  51. for i = 0; i < numUsers; i++ {
  52. v[i] = map[int32]float32{}
  53. for j = 0; j < max; j++ {
  54. v[i][j] = 0.0
  55. }
  56. }
  57.  
  58. return fmt.Sprintf("%T", v)
  59. })
  60.  
  61. profile(func() string {
  62. v := map[uint16]map[uint16]uint8{}
  63.  
  64. for i = 0; i < numUsers; i++ {
  65. v[uint16(i)] = map[uint16]uint8{}
  66. for j = 0; j < max; j++ {
  67. // Quantization
  68. v[uint16(i)][uint16(j)] = uint8(0.0 * 255)
  69. }
  70. }
  71.  
  72. return fmt.Sprintf("%T", v)
  73. })
  74. }
Add Comment
Please, Sign In to add comment