benchmarks_test.go 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. package ut
  2. import (
  3. "testing"
  4. "github.com/go-playground/locales/en"
  5. )
  6. func BenchmarkBasicTranslation(b *testing.B) {
  7. en := en.New()
  8. ut := New(en, en)
  9. loc := ut.FindTranslator("en")
  10. translations := []struct {
  11. key interface{}
  12. trans string
  13. expected error
  14. override bool
  15. }{
  16. {
  17. key: "welcome",
  18. trans: "Welcome to the site",
  19. expected: nil,
  20. },
  21. {
  22. key: "welcome-user",
  23. trans: "Welcome to the site {0}",
  24. expected: nil,
  25. },
  26. {
  27. key: "welcome-user2",
  28. trans: "Welcome to the site {0}, your location is {1}",
  29. expected: nil,
  30. },
  31. }
  32. for _, tt := range translations {
  33. if err := loc.Add(tt.key, tt.trans, tt.override); err != nil {
  34. b.Fatalf("adding translation '%s' failed with key '%s'", tt.trans, tt.key)
  35. }
  36. }
  37. var err error
  38. b.ResetTimer()
  39. b.Run("", func(b *testing.B) {
  40. for i := 0; i < b.N; i++ {
  41. if _, err = loc.T("welcome"); err != nil {
  42. b.Error(err)
  43. }
  44. }
  45. })
  46. b.Run("Parallel", func(b *testing.B) {
  47. b.RunParallel(func(pb *testing.PB) {
  48. for pb.Next() {
  49. if _, err = loc.T("welcome"); err != nil {
  50. b.Error(err)
  51. }
  52. }
  53. })
  54. })
  55. b.Run("With1Param", func(b *testing.B) {
  56. for i := 0; i < b.N; i++ {
  57. if _, err = loc.T("welcome-user", "Joeybloggs"); err != nil {
  58. b.Error(err)
  59. }
  60. }
  61. })
  62. b.Run("ParallelWith1Param", func(b *testing.B) {
  63. b.RunParallel(func(pb *testing.PB) {
  64. for pb.Next() {
  65. if _, err = loc.T("welcome-user", "Joeybloggs"); err != nil {
  66. b.Error(err)
  67. }
  68. }
  69. })
  70. })
  71. b.Run("With2Param", func(b *testing.B) {
  72. for i := 0; i < b.N; i++ {
  73. if _, err = loc.T("welcome-user2", "Joeybloggs", "/dev/tty0"); err != nil {
  74. b.Error(err)
  75. }
  76. }
  77. })
  78. b.Run("ParallelWith2Param", func(b *testing.B) {
  79. b.RunParallel(func(pb *testing.PB) {
  80. for pb.Next() {
  81. if _, err = loc.T("welcome-user2", "Joeybloggs", "/dev/tty0"); err != nil {
  82. b.Error(err)
  83. }
  84. }
  85. })
  86. })
  87. }