Skip to content

Commit 884b834

Browse files
committed
initial commit.
0 parents  commit 884b834

File tree

8 files changed

+555
-0
lines changed

8 files changed

+555
-0
lines changed

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
/vendor/
2+
/tmp/

Makefile

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
test:
2+
go test
3+
4+
bench:
5+
cd benchmark && go test -bench . -benchmem

README.md

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
# fluent-logger-go
2+
3+
## Benchmark
4+
5+
```
6+
$ go test -bench . -benchmem
7+
testing: warning: no tests to run
8+
BenchmarkStructFluentLoggerGo-4 200000 7927 ns/op 1503 B/op 8 allocs/op
9+
BenchmarkStructFluentLoggerGolang-4 50000 29026 ns/op 4725 B/op 34 allocs/op
10+
BenchmarkMapFluentLoggerGo-4 200000 8340 ns/op 1141 B/op 6 allocs/op
11+
BenchmarkMapFluentLoggerGolang-4 50000 33745 ns/op 5820 B/op 60 allocs/op
12+
PASS
13+
ok github.com/daichirata/fluent-logger-go/benchmark 7.242s
14+
```

benchmark/benchmark_test.go

Lines changed: 195 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,195 @@
1+
package main
2+
3+
import (
4+
"fmt"
5+
"io"
6+
"net"
7+
"os"
8+
"testing"
9+
"time"
10+
11+
daichirata "github.com/daichirata/fluent-logger-go"
12+
official "github.com/fluent/fluent-logger-golang/fluent"
13+
)
14+
15+
func init() {
16+
if os.Getenv("DUMMY_DAEMON") == "1" {
17+
fmt.Println("enable dummay daemon")
18+
runDummyDaemon()
19+
}
20+
}
21+
22+
func runDummyDaemon() {
23+
listener, err := net.Listen("tcp", "0.0.0.0:24224")
24+
if err != nil {
25+
panic(err)
26+
}
27+
go func() {
28+
for {
29+
conn, err := listener.Accept()
30+
if err != nil {
31+
panic(err)
32+
}
33+
go func() {
34+
defer conn.Close()
35+
for {
36+
buf := make([]byte, 1024)
37+
_, err := conn.Read(buf)
38+
if err != nil {
39+
if err == io.EOF {
40+
break
41+
}
42+
panic(err)
43+
}
44+
}
45+
}()
46+
}
47+
}()
48+
}
49+
50+
type Test struct {
51+
A string `msg:"a"`
52+
B string `msg:"b"`
53+
C int `msg:"c"`
54+
D int `msg:"d"`
55+
E string `msg:"e"`
56+
F string `msg:"f"`
57+
G []int `msg:"g"`
58+
H int64 `msg:"h"`
59+
I int64 `msg:"i"`
60+
J int64 `msg:"j"`
61+
K int64 `msg:"k"`
62+
L int64 `msg:"l"`
63+
N int64 `msg:"n"`
64+
M int64 `msg:"m"`
65+
O int64 `msg:"o"`
66+
P int `msg:"p"`
67+
Q int `msg:"q"`
68+
R int64 `msg:"r"`
69+
S int `msg:"s"`
70+
T int `msg:"t"`
71+
U float64 `msg:"u"`
72+
V string `msg:"v"`
73+
W int `msg:"w"`
74+
X int `msg:"x"`
75+
Y string `msg:"y"`
76+
Z string `msg:"z"`
77+
}
78+
79+
var structmsg = Test{
80+
A: "string",
81+
B: "string",
82+
C: 1,
83+
D: 2,
84+
E: "string",
85+
F: "string",
86+
G: []int{3, 4},
87+
H: time.Now().Unix(),
88+
I: time.Now().Unix(),
89+
J: time.Now().Unix(),
90+
K: time.Now().Unix(),
91+
L: time.Now().Unix(),
92+
N: time.Now().Unix(),
93+
M: time.Now().Unix(),
94+
O: time.Now().Unix(),
95+
P: 13,
96+
Q: 14,
97+
R: 15,
98+
S: 16,
99+
T: 17,
100+
U: 18,
101+
V: "string",
102+
W: 19,
103+
X: 20,
104+
Y: "string",
105+
Z: "string",
106+
}
107+
108+
var mapmsg = map[string]interface{}{
109+
"A": "string",
110+
"B": "string",
111+
"C": 1,
112+
"D": 2,
113+
"E": "string",
114+
"F": "string",
115+
"G": []int{3, 4},
116+
"H": time.Now().Unix(),
117+
"I": time.Now().Unix(),
118+
"J": time.Now().Unix(),
119+
"K": time.Now().Unix(),
120+
"L": time.Now().Unix(),
121+
"N": time.Now().Unix(),
122+
"M": time.Now().Unix(),
123+
"O": time.Now().Unix(),
124+
"P": 13,
125+
"Q": 14,
126+
"R": 15,
127+
"S": 16,
128+
"T": 17,
129+
"U": 18,
130+
"V": "string",
131+
"W": 19,
132+
"X": 20,
133+
"Y": "string",
134+
"Z": "string",
135+
}
136+
137+
func BenchmarkStructDaichirata(b *testing.B) {
138+
logger, err := daichirata.NewLogger(daichirata.Config{})
139+
if err != nil {
140+
panic(err)
141+
}
142+
defer logger.Close()
143+
144+
b.ResetTimer()
145+
for i := 0; i < b.N; i++ {
146+
if err := logger.Post("debug.daichirata", structmsg); err != nil {
147+
panic(err)
148+
}
149+
}
150+
}
151+
152+
func BenchmarkStructOfficial(b *testing.B) {
153+
logger, err := official.New(official.Config{})
154+
if err != nil {
155+
panic(err)
156+
}
157+
defer logger.Close()
158+
159+
b.ResetTimer()
160+
for i := 0; i < b.N; i++ {
161+
if err := logger.Post("debug.daichirata", structmsg); err != nil {
162+
panic(err)
163+
}
164+
}
165+
}
166+
167+
func BenchmarkMapDaichirata(b *testing.B) {
168+
logger, err := daichirata.NewLogger(daichirata.Config{})
169+
if err != nil {
170+
panic(err)
171+
}
172+
defer logger.Close()
173+
174+
b.ResetTimer()
175+
for i := 0; i < b.N; i++ {
176+
if err := logger.Post("debug.official", mapmsg); err != nil {
177+
panic(err)
178+
}
179+
}
180+
}
181+
182+
func BenchmarkMapOfficial(b *testing.B) {
183+
logger, err := official.New(official.Config{})
184+
if err != nil {
185+
panic(err)
186+
}
187+
defer logger.Close()
188+
189+
b.ResetTimer()
190+
for i := 0; i < b.N; i++ {
191+
if err := logger.Post("debug.official", mapmsg); err != nil {
192+
panic(err)
193+
}
194+
}
195+
}

glide.lock

Lines changed: 49 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

glide.yaml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package: github.com/daichirata/fluent-logger-go
2+
import:
3+
- package: gopkg.in/vmihailenco/msgpack.v2
4+
testImport:
5+
- package: github.com/stretchr/testify
6+
subpackages:
7+
- assert

0 commit comments

Comments
 (0)