2020-08-26 19:34:08 +00:00
|
|
|
|
# allocs
|
|
|
|
|
|
|
|
|
|
`Counter` используется для нахождения уникальных слов и подсчета вхождений каждого из них.
|
|
|
|
|
Его интерфейс выглядит так:
|
|
|
|
|
|
2022-03-05 23:45:34 +00:00
|
|
|
|
* `Count(r io.Reader) error` — функция, которая подсчитывает количество вхождений каждого слова в тексте.
|
2020-08-26 19:34:08 +00:00
|
|
|
|
На вход подается io.Reader, в котором находится некоторый текст.
|
|
|
|
|
Разделителями являются только переносы строк и пробелы.
|
2021-03-30 22:29:33 +00:00
|
|
|
|
* `String() string` — преобразует мапу вида `{"слово": "количество вхождений"}` в форматированную строку.
|
2020-08-26 19:34:08 +00:00
|
|
|
|
|
|
|
|
|
Необходимо написать имплементацию `EnhancedCounter` (см. файл `allocs.go`)
|
|
|
|
|
и снизить количество аллокаций. Бейзлайн можно найти в `baseline.go`.
|
|
|
|
|
|
|
|
|
|
Значения бенчмарков для бейзлайна:
|
|
|
|
|
```
|
|
|
|
|
goos: linux
|
|
|
|
|
goarch: amd64
|
2023-10-02 19:32:41 +00:00
|
|
|
|
pkg: gitlab.com/manytask/itmo-go/private/allocs
|
2020-08-26 19:34:08 +00:00
|
|
|
|
Benchmark/count-4 73200 16294 ns/op 880 B/op 5 allocs/op
|
|
|
|
|
Benchmark/main-4 40485 30113 ns/op 1034 B/op 9 allocs/op
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
Значения бенчмарков для авторского решения:
|
|
|
|
|
```goos: linux
|
|
|
|
|
goarch: amd64
|
2023-10-02 19:32:41 +00:00
|
|
|
|
pkg: gitlab.com/manytask/itmo-go/private/allocs
|
2020-08-26 19:34:08 +00:00
|
|
|
|
Benchmark/count-4 212850 5471 ns/op 4144 B/op 2 allocs/op
|
|
|
|
|
Benchmark/main-4 143937 8247 ns/op 4176 B/op 3 allocs/op
|
|
|
|
|
```
|
|
|
|
|
|
2021-03-30 22:29:33 +00:00
|
|
|
|
|