summaryrefslogtreecommitdiff
path: root/plugins/jobs/drivers/beanstalk/encode_test.go
blob: 34f2342bbbd6504f1ba7eac1f72ecfe25c3ad280 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
package beanstalk

import (
	"bytes"
	"crypto/rand"
	"encoding/gob"
	"testing"

	json "github.com/json-iterator/go"
	"github.com/spiral/roadrunner/v2/utils"
)

func BenchmarkEncodeGob(b *testing.B) {
	tb := make([]byte, 1024*10)
	_, err := rand.Read(tb)
	if err != nil {
		b.Fatal(err)
	}

	item := &Item{
		Job:     "/super/test/php/class/loooooong",
		Ident:   "12341234-asdfasdfa-1234234-asdfasdfas",
		Payload: utils.AsString(tb),
		Headers: map[string][]string{"Test": {"test1", "test2"}},
		Options: &Options{
			Priority: 10,
			Pipeline: "test-local-pipe",
			Delay:    10,
			Timeout:  5,
		},
	}

	b.ResetTimer()
	b.ReportAllocs()

	for i := 0; i < b.N; i++ {
		bb := new(bytes.Buffer)
		err := gob.NewEncoder(bb).Encode(item)
		if err != nil {
			b.Fatal(err)
		}
		_ = bb.Bytes()
		bb.Reset()
	}
}

func BenchmarkEncodeJsonIter(b *testing.B) {
	tb := make([]byte, 1024*10)
	_, err := rand.Read(tb)
	if err != nil {
		b.Fatal(err)
	}

	item := &Item{
		Job:     "/super/test/php/class/loooooong",
		Ident:   "12341234-asdfasdfa-1234234-asdfasdfas",
		Payload: utils.AsString(tb),
		Headers: map[string][]string{"Test": {"test1", "test2"}},
		Options: &Options{
			Priority: 10,
			Pipeline: "test-local-pipe",
			Delay:    10,
			Timeout:  5,
		},
	}

	b.ResetTimer()
	b.ReportAllocs()

	for i := 0; i < b.N; i++ {
		bb, err := json.Marshal(item)
		if err != nil {
			b.Fatal(err)
		}
		_ = bb
	}
}