From 2cf7ad04f04724fee4b07d5440cb21b069139ee9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dobros=C5=82aw=20=C5=BBybort?= Date: Tue, 16 Dec 2014 13:52:09 +0100 Subject: [PATCH] add: benchmarks --- slug_test.go | 138 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 138 insertions(+) diff --git a/slug_test.go b/slug_test.go index a831955..404e524 100644 --- a/slug_test.go +++ b/slug_test.go @@ -197,3 +197,141 @@ func TestSlugMakeSmartTruncate(t *testing.T) { } } } + +func BenchmarkMakeShortAscii(b *testing.B) { + b.ReportAllocs() + for n := 0; n < b.N; n++ { + Make("Hello world") + } +} +func BenchmarkMakeShort(b *testing.B) { + b.ReportAllocs() + for n := 0; n < b.N; n++ { + Make("хелло ворлд") + } +} + +func BenchmarkMakeShortSymbols(b *testing.B) { + b.ReportAllocs() + for n := 0; n < b.N; n++ { + Make("·/,:;`˜'\" &€£¥") + } +} + +func BenchmarkMakeMediumAscii(b *testing.B) { + b.ReportAllocs() + for n := 0; n < b.N; n++ { + Make("ABCDE FGHIJ KLMNO PQRST UWXYZ ABCDE FGHIJ KLMNO PQRST UWXYZ ABCDE") + } +} + +func BenchmarkMakeMedium(b *testing.B) { + b.ReportAllocs() + for n := 0; n < b.N; n++ { + Make("ヲァィゥェ ォャュョッ ーアイウエ オカキクケ コサシスセ ソタチツテ トナニヌネ ノハヒフヘ ホマミムメ モヤユヨラ リルレロワ") + } +} + +func BenchmarkMakeLongAscii(b *testing.B) { + longStr := "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi " + + "pulvinar sodales ultrices. Nulla facilisi. Sed at vestibulum erat. Ut " + + "sit amet urna posuere, sagittis eros ac, varius nisi. Morbi ullamcorper " + + "odio at nunc pulvinar mattis. Vestibulum rutrum, ante eu dictum mattis, " + + "elit risus finibus nunc, consectetur facilisis eros leo ut sapien. Sed " + + "pulvinar volutpat mi. Cras semper mi ac eros accumsan, at feugiat massa " + + "elementum. Morbi eget dolor sit amet purus condimentum egestas non ut " + + "sapien. Duis feugiat magna vitae nisi lobortis, quis finibus sem " + + "sollicitudin. Pellentesque eleifend blandit ipsum, ut porta arcu " + + "ultricies et. Fusce vel ipsum porta, placerat diam ac, consectetur " + + "magna. Nulla in porta sem. Suspendisse commodo, felis in molestie " + + "ultricies, arcu ipsum aliquet turpis, elementum dapibus ipsum lorem a " + + "nisl. Etiam varius imperdiet placerat. Aliquam euismod lacus arcu, " + + "ultrices hendrerit est pellentesque vel. Aliquam sit amet laoreet leo. " + + "Integer eros libero, mollis sed posuere." + + b.ReportAllocs() + b.ResetTimer() + for n := 0; n < b.N; n++ { + Make(longStr) + } +} + +func BenchmarkSubstituteRuneShort(b *testing.B) { + shortStr := "Hello/Hi world" + subs := map[rune]string{'o': "no", '/': "slash"} + + b.ReportAllocs() + b.ResetTimer() + for n := 0; n < b.N; n++ { + SubstituteRune(shortStr, subs) + } +} + +func BenchmarkSubstituteRuneLong(b *testing.B) { + longStr := "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi " + + "pulvinar sodales ultrices. Nulla facilisi. Sed at vestibulum erat. Ut " + + "sit amet urna posuere, sagittis eros ac, varius nisi. Morbi ullamcorper " + + "odio at nunc pulvinar mattis. Vestibulum rutrum, ante eu dictum mattis, " + + "elit risus finibus nunc, consectetur facilisis eros leo ut sapien. Sed " + + "pulvinar volutpat mi. Cras semper mi ac eros accumsan, at feugiat massa " + + "elementum. Morbi eget dolor sit amet purus condimentum egestas non ut " + + "sapien. Duis feugiat magna vitae nisi lobortis, quis finibus sem " + + "sollicitudin. Pellentesque eleifend blandit ipsum, ut porta arcu " + + "ultricies et. Fusce vel ipsum porta, placerat diam ac, consectetur " + + "magna. Nulla in porta sem. Suspendisse commodo, felis in molestie " + + "ultricies, arcu ipsum aliquet turpis, elementum dapibus ipsum lorem a " + + "nisl. Etiam varius imperdiet placerat. Aliquam euismod lacus arcu, " + + "ultrices hendrerit est pellentesque vel. Aliquam sit amet laoreet leo. " + + "Integer eros libero, mollis sed posuere." + subs := map[rune]string{ + 'o': "no", + '/': "slash", + 'i': "done", + 'E': "es", + 'a': "ASD", + '1': "one", + 'l': "onetwo", + } + + b.ReportAllocs() + b.ResetTimer() + for n := 0; n < b.N; n++ { + SubstituteRune(longStr, subs) + } +} + +func BenchmarkSmartTruncateShort(b *testing.B) { + shortStr := "Hello world" + MaxLength = 8 + + b.ReportAllocs() + b.ResetTimer() + for n := 0; n < b.N; n++ { + smartTruncate(shortStr) + } +} + +func BenchmarkSmartTruncateLong(b *testing.B) { + longStr := "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi " + + "pulvinar sodales ultrices. Nulla facilisi. Sed at vestibulum erat. Ut " + + "sit amet urna posuere, sagittis eros ac, varius nisi. Morbi ullamcorper " + + "odio at nunc pulvinar mattis. Vestibulum rutrum, ante eu dictum mattis, " + + "elit risus finibus nunc, consectetur facilisis eros leo ut sapien. Sed " + + "pulvinar volutpat mi. Cras semper mi ac eros accumsan, at feugiat massa " + + "elementum. Morbi eget dolor sit amet purus condimentum egestas non ut " + + "sapien. Duis feugiat magna vitae nisi lobortis, quis finibus sem " + + "sollicitudin. Pellentesque eleifend blandit ipsum, ut porta arcu " + + "ultricies et. Fusce vel ipsum porta, placerat diam ac, consectetur " + + "magna. Nulla in porta sem. Suspendisse commodo, felis in molestie " + + "ultricies, arcu ipsum aliquet turpis, elementum dapibus ipsum lorem a " + + "nisl. Etiam varius imperdiet placerat. Aliquam euismod lacus arcu, " + + "ultrices hendrerit est pellentesque vel. Aliquam sit amet laoreet leo. " + + "Integer eros libero, mollis sed posuere." + MaxLength = 256 + + b.ReportAllocs() + b.ResetTimer() + for n := 0; n < b.N; n++ { + smartTruncate(longStr) + } +}