bench_test.go 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. package testjson
  2. import (
  3. "encoding/json"
  4. "testing"
  5. jsoniter "github.com/json-iterator/go"
  6. segment "github.com/segmentio/encoding/json"
  7. )
  8. const input = `{"@timestamp":"2020-02-12T14:02:10.849Z","@metadata":{"beat":"filebeat","type":"doc","version":"6.1.1","topic":"k8slog"},"index":"k8slog","offset":908739,"stream":"stdout","topic":"k8slog","k8s_container_name":"shield-rpc","k8s_pod_namespace":"xx-xiaoheiban","stage":"gray","prospector":{"type":"log"},"k8s_node_name":"cn-hangzhou.i-bp15w8irul9hmm3l9mxz","beat":{"name":"log-pilot-7s6qf","hostname":"log-pilot-7s6qf","version":"6.1.1"},"source":"/host/var/lib/docker/containers/4e6dca76f3e38fb8b39631e9bb3a19f9150cc82b1dab84f71d4622a08db20bfb/4e6dca76f3e38fb8b39631e9bb3a19f9150cc82b1dab84f71d4622a08db20bfb-json.log","level":"info","duration":"39.425µs","content":"172.25.5.167:49976 - /remoteshield.Filter/Filter - {\"sentence\":\"王XX2月12日作业\"}","k8s_pod":"shield-rpc-57c9dc6797-55skf","docker_container":"k8s_shield-rpc_shield-rpc-57c9dc6797-55skf_xx-xiaoheiban_a8341ba0-30ee-11ea-8ac4-00163e0fb3ef_0"}`
  9. func BenchmarkStdJsonMarshal(b *testing.B) {
  10. m := make(map[string]interface{})
  11. if err := json.Unmarshal([]byte(input), &m); err != nil {
  12. b.FailNow()
  13. }
  14. for i := 0; i < b.N; i++ {
  15. if _, err := json.Marshal(m); err != nil {
  16. b.FailNow()
  17. }
  18. }
  19. }
  20. func BenchmarkJsonIteratorMarshal(b *testing.B) {
  21. m := make(map[string]interface{})
  22. if err := jsoniter.Unmarshal([]byte(input), &m); err != nil {
  23. b.FailNow()
  24. }
  25. for i := 0; i < b.N; i++ {
  26. if _, err := jsoniter.Marshal(m); err != nil {
  27. b.FailNow()
  28. }
  29. }
  30. }
  31. func BenchmarkSegmentioMarshal(b *testing.B) {
  32. m := make(map[string]interface{})
  33. if err := segment.Unmarshal([]byte(input), &m); err != nil {
  34. b.FailNow()
  35. }
  36. for i := 0; i < b.N; i++ {
  37. if _, err := jsoniter.Marshal(m); err != nil {
  38. b.FailNow()
  39. }
  40. }
  41. }
  42. func BenchmarkStdJsonUnmarshal(b *testing.B) {
  43. for i := 0; i < b.N; i++ {
  44. m := make(map[string]interface{})
  45. if err := json.Unmarshal([]byte(input), &m); err != nil {
  46. b.FailNow()
  47. }
  48. }
  49. }
  50. func BenchmarkJsonIteratorUnmarshal(b *testing.B) {
  51. for i := 0; i < b.N; i++ {
  52. m := make(map[string]interface{})
  53. if err := jsoniter.Unmarshal([]byte(input), &m); err != nil {
  54. b.FailNow()
  55. }
  56. }
  57. }
  58. func BenchmarkSegmentioUnmarshal(b *testing.B) {
  59. for i := 0; i < b.N; i++ {
  60. m := make(map[string]interface{})
  61. if err := segment.Unmarshal([]byte(input), &m); err != nil {
  62. b.FailNow()
  63. }
  64. }
  65. }