Skip to content

HW10 is completed - #10

Open
qeeq72 wants to merge 2 commits into
masterfrom
hw10_program_optimization
Open

HW10 is completed#10
qeeq72 wants to merge 2 commits into
masterfrom
hw10_program_optimization

Conversation

@qeeq72

@qeeq72 qeeq72 commented Dec 16, 2021

Copy link
Copy Markdown
Owner

Домашнее задание №10 «Оптимизация программы»

Чек-лист студента (Что это?)

Критерии оценки

  • Пайплайн зелёный и нет попытки «обмануть» систему - 4 балла
  • Добавлены юнит-тесты - до 3 баллов
  • Понятность и чистота кода - до 3 баллов

Зачёт от 7 баллов

В коде есть комментарии по оптимизациям. Также приложены файлы старой и новой версии с результатами бенчмарков.
Результаты выполнения benchstat:
name old time/op new time/op delta
GetDomainStat-4 629ms ±87% 7ms ± 9% -98.81% (p=0.000 n=10+10)

name old alloc/op new alloc/op delta
GetDomainStat-4 179MB ±71% 0MB ± 7% -99.89% (p=0.000 n=10+10)

name old allocs/op new allocs/op delta
GetDomainStat-4 1.83M ±71% 0.01M ± 8% -99.64% (p=0.000 n=10+10)

@qeeq72

qeeq72 commented Dec 16, 2021

Copy link
Copy Markdown
Owner Author

Новые результаты benchstat:

name old time/op new time/op delta
GetDomainStat-4 629ms ±87% 7ms ± 2% -98.85% (p=0.000 n=10+9)

name old alloc/op new alloc/op delta
GetDomainStat-4 179MB ±71% 0MB ± 4% -99.91% (p=0.000 n=10+9)

name old allocs/op new allocs/op delta
GetDomainStat-4 1.83M ±71% 0.01M ± 4% -99.65% (p=0.000 n=10+9)

@agneum agneum left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Спасибо за выполненное задание. Хорошая работа
Итого: 10 баллов из 10

2. Для экономии памяти используется Scanner
3. Не используется каст строки к слайсу байт на входе в функцию анмаршалинга
*/
func getUsers(r io.Reader) (result users, err error) {

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

В рамках задания можно не собирать данные пользователей, достаточно только подсчитать количество доменов.

Comment on lines +77 to +80
re, err := regexp.Compile("\\." + domain)
if err != nil {
return nil, err
}

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Рекомендую заменить регулярное выражение на strings.HasSuffix


if matched {
num := result[strings.ToLower(strings.SplitN(user.Email, "@", 2)[1])]
sep := strings.SplitN(u[i].Email, "@", 3)

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Почему на 3 части?

Comment on lines +92 to +95
sep = strings.SplitN(u[i].Email, ".", 3)
if len(sep) != 2 {
continue
}

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Доменное имя может быть многоуровневым, так же точка может встретиться в имени пользователя. То есть ограничение на длину 2 отсечёт потенциально валидные адреса

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants