Skip to content

Commit bd547c1

Browse files
authored
Merge pull request #2 from getlantern/benchmarks-e2e-results
perf: reuse pre-warmed Core to cut connection setup cost by 44%
2 parents d4faf1b + d0e2989 commit bd547c1

20 files changed

Lines changed: 1605 additions & 63 deletions

BENCHMARKS.md

Lines changed: 305 additions & 0 deletions
Large diffs are not rendered by default.

cmd/echoserver/main.go

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
// echoserver is a standalone TCP echo server for remote benchmarking.
2+
// Any data received on a connection is echoed back immediately via io.Copy.
3+
package main
4+
5+
import (
6+
"flag"
7+
"fmt"
8+
"io"
9+
"log"
10+
"net"
11+
"os"
12+
"os/signal"
13+
"syscall"
14+
)
15+
16+
func main() {
17+
port := flag.Int("port", 8080, "TCP port to listen on")
18+
flag.Parse()
19+
20+
addr := fmt.Sprintf(":%d", *port)
21+
lis, err := net.Listen("tcp", addr)
22+
if err != nil {
23+
log.Fatalf("listen %s: %v", addr, err)
24+
}
25+
log.Printf("echo server listening on %s", addr)
26+
27+
go func() {
28+
for {
29+
conn, err := lis.Accept()
30+
if err != nil {
31+
return
32+
}
33+
go handle(conn)
34+
}
35+
}()
36+
37+
sig := make(chan os.Signal, 1)
38+
signal.Notify(sig, syscall.SIGINT, syscall.SIGTERM)
39+
<-sig
40+
log.Println("shutting down")
41+
lis.Close()
42+
}
43+
44+
func handle(c net.Conn) {
45+
defer c.Close()
46+
io.Copy(c, c)
47+
}

dialer.go

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ type Dialer interface {
3232
mustEmbedUnimplementedDialer()
3333
}
3434

35-
type newDialerFunc func(context.Context, *Config) (Dialer, error)
35+
type newDialerFunc func(context.Context, *Config, Core) (Dialer, error)
3636

3737
var (
3838
knownDialerVersions = make(map[string]newDialerFunc)
@@ -117,10 +117,11 @@ func NewDialerWithContext(ctx context.Context, c *Config) (Dialer, error) {
117117
// in a more organized way.
118118
for exportName := range core.Exports() {
119119
if f, ok := knownDialerVersions[exportName]; ok {
120-
return f(ctx, c)
120+
return f(ctx, c, core)
121121
}
122122
}
123123

124+
core.Close()
124125
return nil, ErrDialerVersionNotFound
125126
}
126127

@@ -144,7 +145,7 @@ type FixedDialer interface {
144145
mustEmbedUnimplementedFixedDialer()
145146
}
146147

147-
type newFixedDialerFunc func(context.Context, *Config) (FixedDialer, error)
148+
type newFixedDialerFunc func(context.Context, *Config, Core) (FixedDialer, error)
148149

149150
var (
150151
knownFixedDialerVersions = make(map[string]newFixedDialerFunc)
@@ -190,9 +191,10 @@ func NewFixedDialerWithContext(ctx context.Context, cfg *Config) (FixedDialer, e
190191
// Sniff the version of the dialer
191192
for exportName := range core.Exports() {
192193
if f, ok := knownFixedDialerVersions[exportName]; ok {
193-
return f(ctx, cfg)
194+
return f(ctx, cfg, core)
194195
}
195196
}
196197

198+
core.Close()
197199
return nil, ErrFixedDialerVersionNotFound
198200
}

0 commit comments

Comments
 (0)