Fix varjoin/README.md
This commit is contained in:
parent
8173ecdd8c
commit
6dbe775f53
1 changed files with 4 additions and 46 deletions
|
@ -1,54 +1,12 @@
|
||||||
# varfmt
|
# varjoin
|
||||||
|
|
||||||
Реализуйте функцию `varfmt.Sprintf`. Функция принимает формат строку и переменное число аргументов.
|
Реализуйте функцию `varjoin.Join`.
|
||||||
|
|
||||||
Синтаксис формат-строки похож на формат-строки питона:
|
Функция принимает разделитель и переменное число строк. Нужно вернуть одну строку-склейку всех аргументов через разделитель.
|
||||||
- `{}` - задаёт ссылку на аргумент
|
|
||||||
- `{number}` - ссылается на аргумент с индексом `number`
|
|
||||||
- `{}` ссылается на аргумент с индексом равным позиции `{}` внутри паттерна
|
|
||||||
|
|
||||||
Например, `varfmt.Sprintf("{1} {0}", "Hello", "World)` должен вернуть строку `World Hello`.
|
|
||||||
|
|
||||||
Аргументы функции могут быть произвольными типами. Вам нужно форматировать их так же, как это
|
|
||||||
делает функция `fmt.Sprint`. Вызывать `fmt.Sprint` для форматирования отдельного аргумента
|
|
||||||
не запрещается.
|
|
||||||
|
|
||||||
Ваше решение будет сравниваться с baseline-решением на бенчмарке. Сравнение будет
|
|
||||||
проходить независимо по трем метрикам.
|
|
||||||
- `time/op` - время на одну итерацию бенчмарка
|
|
||||||
- `alloc/op` - число выделенных байт на одну итерацию бенчмарка
|
|
||||||
- `allocs/op` - число выделенных объектов на одну итерацию бенчмарка
|
|
||||||
|
|
||||||
Ваш код должен быть не более чем в два раза хуже чем baseline.
|
|
||||||
|
|
||||||
```
|
|
||||||
goos: linux
|
|
||||||
goarch: amd64
|
|
||||||
pkg: gitlab.com/slon/shad-go/varfmt
|
|
||||||
BenchmarkFormat/small_int-4 4744729 263 ns/op 64 B/op 4 allocs/op
|
|
||||||
BenchmarkFormat/small_string-4 2388128 484 ns/op 168 B/op 8 allocs/op
|
|
||||||
BenchmarkFormat/big-4 8997 127827 ns/op 194656 B/op 41 allocs/op
|
|
||||||
BenchmarkSprintf/small-4 13330094 85.7 ns/op 2 B/op 1 allocs/op
|
|
||||||
BenchmarkSprintf/small_string-4 9351295 123 ns/op 16 B/op 1 allocs/op
|
|
||||||
BenchmarkSprintf/big-4 12006 108144 ns/op 16392 B/op 1 allocs/op
|
|
||||||
PASS
|
|
||||||
```
|
|
||||||
|
|
||||||
### Примеры
|
### Примеры
|
||||||
|
|
||||||
Как запустить все тесты и бенчмарки:
|
Как запустить все тесты и бенчмарки:
|
||||||
```
|
```
|
||||||
go test -v -bench=. ./varfmt/...
|
go test -v ./varjoin/...
|
||||||
```
|
|
||||||
|
|
||||||
Как запустить только бенчмарки:
|
|
||||||
```
|
|
||||||
go test -v -run=^a -bench=. ./varfmt/...
|
|
||||||
```
|
|
||||||
Здесь `^a` - регулярное выражение, задающее тесты для запуска,
|
|
||||||
а `.` - задаёт бенчмарки.
|
|
||||||
|
|
||||||
Как запустить только big бенчмарки:
|
|
||||||
```
|
|
||||||
go test -v -run=^a -bench=/big ./varfmt/...
|
|
||||||
```
|
```
|
||||||
|
|
Loading…
Reference in a new issue