From 3d5da0c39b208bccf7f4ae6387fca03773250971 Mon Sep 17 00:00:00 2001 From: Shivaram Lingamneni Date: Mon, 3 Apr 2023 03:40:04 -0400 Subject: [PATCH] add a benchmark for NAMES --- irc/client_test.go | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/irc/client_test.go b/irc/client_test.go index 64d1036c..ca4c2619 100644 --- a/irc/client_test.go +++ b/irc/client_test.go @@ -4,8 +4,10 @@ package irc import ( + "fmt" "testing" + "github.com/ergochat/ergo/irc/languages" "github.com/ergochat/ergo/irc/utils" ) @@ -30,6 +32,47 @@ func BenchmarkGenerateBatchID(b *testing.B) { } } +func BenchmarkNames(b *testing.B) { + channelSize := 1024 + server := &Server{ + name: "ergo.test", + } + lm, err := languages.NewManager(false, "", "") + if err != nil { + b.Fatal(err) + } + server.config.Store(&Config{ + languageManager: lm, + }) + for i := 0; i < b.N; i++ { + channel := &Channel{ + name: "#test", + nameCasefolded: "#test", + server: server, + members: make(MemberSet), + } + for j := 0; j < channelSize; j++ { + nick := fmt.Sprintf("client_%d", j) + client := &Client{ + server: server, + nick: nick, + nickCasefolded: nick, + } + channel.members.Add(client) + channel.regenerateMembersCache() + session := &Session{ + client: client, + } + rb := NewResponseBuffer(session) + channel.Names(client, rb) + if len(rb.messages) < 2 { + b.Fatalf("not enough messages: %d", len(rb.messages)) + } + // to inspect the messages: line, _ := rb.messages[0].Line() + } + } +} + func TestUserMasks(t *testing.T) { var um UserMaskSet