mirror of
https://gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/snowflake.git
synced 2025-10-14 05:11:19 -04:00
Benchmark for websocketconn.Conn read/write.
Current output: $ go test -bench=BenchmarkReadWrite -benchmem -benchtime=5s BenchmarkReadWrite/c←s_150-4 451840 13904 ns/op 10.79 MB/s 34954 B/op 4 allocs/op BenchmarkReadWrite/s←c_150-4 452560 16134 ns/op 9.30 MB/s 36378 B/op 4 allocs/op BenchmarkReadWrite/c←s_3000-4 202950 40846 ns/op 73.45 MB/s 69833 B/op 8 allocs/op BenchmarkReadWrite/s←c_3000-4 189262 37930 ns/op 79.09 MB/s 69768 B/op 8 allocs/op
This commit is contained in:
parent
0780f2e809
commit
8cadcaee70
1 changed files with 41 additions and 0 deletions
|
@ -263,3 +263,44 @@ func TestClose(t *testing.T) {
|
||||||
t.Fatalf("Write after Close returned %v, expected %v", err, io.ErrClosedPipe)
|
t.Fatalf("Write after Close returned %v, expected %v", err, io.ErrClosedPipe)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Benchmark read/write in the client←server and server←client directions, with
|
||||||
|
// messages of different sizes. Run with -benchmem to see memory allocations.
|
||||||
|
func BenchmarkReadWrite(b *testing.B) {
|
||||||
|
trial := func(b *testing.B, readConn, writeConn *Conn, msgSize int) {
|
||||||
|
go func() {
|
||||||
|
io.Copy(ioutil.Discard, readConn)
|
||||||
|
}()
|
||||||
|
data := make([]byte, msgSize)
|
||||||
|
b.ResetTimer()
|
||||||
|
for i := 0; i < b.N; i++ {
|
||||||
|
n, err := writeConn.Write(data[:])
|
||||||
|
b.SetBytes(int64(n))
|
||||||
|
if err != nil {
|
||||||
|
b.Fatal(err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for _, msgSize := range []int{150, 3000} {
|
||||||
|
s, c, err := connPair()
|
||||||
|
if err != nil {
|
||||||
|
b.Fatal(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
b.Run(fmt.Sprintf("c←s %d", msgSize), func(b *testing.B) {
|
||||||
|
trial(b, c, s, msgSize)
|
||||||
|
})
|
||||||
|
b.Run(fmt.Sprintf("s←c %d", msgSize), func(b *testing.B) {
|
||||||
|
trial(b, s, c, msgSize)
|
||||||
|
})
|
||||||
|
|
||||||
|
err = s.Close()
|
||||||
|
if err != nil {
|
||||||
|
b.Fatal(err)
|
||||||
|
}
|
||||||
|
err = c.Close()
|
||||||
|
if err != nil {
|
||||||
|
b.Fatal(err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue