32 lines
867 B
Go
32 lines
867 B
Go
package benchmarks
|
|
|
|
import (
|
|
"strings"
|
|
"testing"
|
|
)
|
|
|
|
func BenchmarkPostsSublist(b *testing.B) {
|
|
p := generatePostsList()
|
|
// fmt.Println(p)
|
|
b.ResetTimer() // reset timer before cycle
|
|
b.Run("GetPostListBySubstring1", func(b *testing.B) {
|
|
for i := 0; i < b.N; i++ {
|
|
p.GetPostListBySubstring1("#Aiogram")
|
|
}
|
|
})
|
|
}
|
|
|
|
func (posts Posts) GetPostListBySubstring1(substring string) Posts {
|
|
res := make(Posts, 0, len(posts))
|
|
// Если первый символ - #, то поиск происходит по тегам
|
|
if substring = substring + " "; substring[0] == '#' {
|
|
for i := range posts {
|
|
// добавляю пробел, чтобы не было ситуации включения одного тега в начало другого
|
|
if strings.Contains(posts[i].Tags+" ", substring) {
|
|
res = append(res, posts[i])
|
|
}
|
|
}
|
|
}
|
|
return res
|
|
}
|