From 60ea6a88fdca0546292a795e5d90c96618bf6b65 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Matthias=20D=C3=B6tsch?= Date: Wed, 9 Mar 2022 21:20:37 +0100 Subject: [PATCH] optimize slackutilsx.EscapeMessage function --- slackutilsx/slackutilsx.go | 6 ++++-- slackutilsx/slackutilsx_test.go | 6 ++++++ 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/slackutilsx/slackutilsx.go b/slackutilsx/slackutilsx.go index 1f7b2b8c2..d6c9c07ef 100644 --- a/slackutilsx/slackutilsx.go +++ b/slackutilsx/slackutilsx.go @@ -50,10 +50,12 @@ func DetectChannelType(channelID string) ChannelType { } } +// initialize replacer only once (if needed) +var escapeReplacer = strings.NewReplacer("&", "&", "<", "<", ">", ">") + // EscapeMessage text func EscapeMessage(message string) string { - replacer := strings.NewReplacer("&", "&", "<", "<", ">", ">") - return replacer.Replace(message) + return escapeReplacer.Replace(message) } // Retryable errors return true. diff --git a/slackutilsx/slackutilsx_test.go b/slackutilsx/slackutilsx_test.go index dcebb4adb..72b2ea140 100644 --- a/slackutilsx/slackutilsx_test.go +++ b/slackutilsx/slackutilsx_test.go @@ -28,3 +28,9 @@ func TestEscapeMessage(t *testing.T) { test("A < B", "A < B") test("A > B", "A > B") } + +func BenchmarkEscapeMessage(b *testing.B) { + for i := 0; i < b.N; i++ { + EscapeMessage("A & B") + } +}