package benchmarks import ( "html/template" "strings" "testing" ) const ( LOCK_POST_DESCR = "🤖 Пост доступен только для зарегистрированных пользователей. Аккаунты создаются администратором. Превью для приватных постов не предусмотрено..." SMALL_POST_DESCR = "🛸 Прилетело НЛО и украло описание поста..." ) func BenchmarkPostDescription(b *testing.B) { post := GetLargePost() b.ResetTimer() // reset timer before cycle b.Run("PostDescription1", func(b *testing.B) { for i := 0; i < b.N; i++ { post.PostDescription1() } }) } func (post Post) PostDescription1() template.HTML { const maxLength = 500 if post.Lock == 1 { return template.HTML(LOCK_POST_DESCR) } if len(post.Body) > maxLength { spanIndex := strings.Index(string(post.Body), "") min := min(spanIndex, maxLength) if min != -1 { return template.HTML(post.Body[:min] + "...") } else { return template.HTML(post.Body[:maxLength] + "...") } } return template.HTML(SMALL_POST_DESCR) }