123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123 |
- package yamux
- import (
- "testing"
- )
- func BenchmarkPing(b *testing.B) {
- client, server := testClientServer()
- defer client.Close()
- defer server.Close()
- for i := 0; i < b.N; i++ {
- rtt, err := client.Ping()
- if err != nil {
- b.Fatalf("err: %v", err)
- }
- if rtt == 0 {
- b.Fatalf("bad: %v", rtt)
- }
- }
- }
- func BenchmarkAccept(b *testing.B) {
- client, server := testClientServer()
- defer client.Close()
- defer server.Close()
- go func() {
- for i := 0; i < b.N; i++ {
- stream, err := server.AcceptStream()
- if err != nil {
- return
- }
- stream.Close()
- }
- }()
- for i := 0; i < b.N; i++ {
- stream, err := client.Open()
- if err != nil {
- b.Fatalf("err: %v", err)
- }
- stream.Close()
- }
- }
- func BenchmarkSendRecv(b *testing.B) {
- client, server := testClientServer()
- defer client.Close()
- defer server.Close()
- sendBuf := make([]byte, 512)
- recvBuf := make([]byte, 512)
- doneCh := make(chan struct{})
- go func() {
- stream, err := server.AcceptStream()
- if err != nil {
- return
- }
- defer stream.Close()
- for i := 0; i < b.N; i++ {
- if _, err := stream.Read(recvBuf); err != nil {
- b.Fatalf("err: %v", err)
- }
- }
- close(doneCh)
- }()
- stream, err := client.Open()
- if err != nil {
- b.Fatalf("err: %v", err)
- }
- defer stream.Close()
- for i := 0; i < b.N; i++ {
- if _, err := stream.Write(sendBuf); err != nil {
- b.Fatalf("err: %v", err)
- }
- }
- <-doneCh
- }
- func BenchmarkSendRecvLarge(b *testing.B) {
- client, server := testClientServer()
- defer client.Close()
- defer server.Close()
- const sendSize = 512 * 1024 * 1024
- const recvSize = 4 * 1024
- sendBuf := make([]byte, sendSize)
- recvBuf := make([]byte, recvSize)
- b.ResetTimer()
- recvDone := make(chan struct{})
- go func() {
- stream, err := server.AcceptStream()
- if err != nil {
- return
- }
- defer stream.Close()
- for i := 0; i < b.N; i++ {
- for j := 0; j < sendSize/recvSize; j++ {
- if _, err := stream.Read(recvBuf); err != nil {
- b.Fatalf("err: %v", err)
- }
- }
- }
- close(recvDone)
- }()
- stream, err := client.Open()
- if err != nil {
- b.Fatalf("err: %v", err)
- }
- defer stream.Close()
- for i := 0; i < b.N; i++ {
- if _, err := stream.Write(sendBuf); err != nil {
- b.Fatalf("err: %v", err)
- }
- }
- <-recvDone
- }
|