Skip to content

Task 1#78

Open
romankirpichnikov wants to merge 1 commit intohardcode-dev:masterfrom
romankirpichnikov:rk-optimization
Open

Task 1#78
romankirpichnikov wants to merge 1 commit intohardcode-dev:masterfrom
romankirpichnikov:rk-optimization

Conversation

@romankirpichnikov
Copy link
Copy Markdown

No description provided.

Copy link
Copy Markdown
Collaborator

@spajic spajic left a comment

Choose a reason for hiding this comment

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

Approve, nice work ✅

Comment thread .rubocop.yml
@@ -0,0 +1 @@
require: rubocop-performance
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 thread case-study.md
36.74 0.168 0.167 0.000 0.001 15000 Array#all?
```

По логике программы, решил просто заменить массив на Set т.к он реализова поверх хеша с встроенной возможности определения уникальности и o(1) сложность
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 thread case-study.md
5.57 0.016 0.016 0.000 0.000 25424 Regexp#match
```

В итоге получили еще прирост в полтора раза с Total: 0.455129 до Total: 0.289249
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 thread case-study.md

### Гипотеза №4

Решил увеличить семпл для сбора статисики, для более наглядного отчета, но даже из предыдущего видно что парсинг даты занимает огромное количество процессерного времени. Изучив исходники понял, что можно сначала приводить даты к определенному формату `'%Y-%m-%d'` а только потом уже сортировать по iso8601. Есть другая мысль о том чтоб лишний раз не парсить данные, а агрегировать их в хеше, но вернусь к ней если еще раз упрусь в производительность Парсинга даты.
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 thread case-study.md
11.78 3.380 3.380 0.000 0.000 3250940 String#split
10.40 14.176 2.984 0.000 11.193 3 Hash#each_key
6.10 1.751 1.751 0.000 0.000 2750940 Object#parse_session
5.17 1.484 1.484 0.000 0.000 2750940 Date#iso8601
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 thread case-study.md
Sort by: self_time

%self total self wait child calls name location
33.07 20.307 9.488 0.000 10.819 500001 Array#each
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.

У вас в программе осталось два .each, внутри каждого большой анонимный блок кода

В результате по отчёту не особо понятно в чём собственно проблема.

Это можно преодолеть тем, чтобы выделить именованные методы

  • вызывать внутри each именованные методы
  • сами each завернуть в именованные методы

Тогда отчёты будут более информативны

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