Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Task1: perfomance #123

Open
wants to merge 9 commits into
base: master
Choose a base branch
from
Open

Task1: perfomance #123

wants to merge 9 commits into from

Conversation

sSmok
Copy link

@sSmok sSmok commented Mar 10, 2023

No description provided.

Copy link
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.

👍 Nice work!

@@ -0,0 +1 @@
3.0.1
Copy link
Collaborator

Choose a reason for hiding this comment

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

Ни много ни мало


### Ваша находка №2
- ruby_prof указывал на метод Enumerable#all? используемый для формирования списка браузеров
- вместо проверки на каждой итерации решил вызвать метод uniq на массиве
Copy link
Collaborator

Choose a reason for hiding this comment

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

Хорошо использовать Set / SortedSet

### Ваша находка №4
- ruby_prof указывал на огромное количество вызовов String#split
- Убрал все лишние вызовы метода split
- метрика изменилась с ~60ms до ~53ms
Copy link
Collaborator

Choose a reason for hiding this comment

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

Уже маловато, хорошо бы тут увеличить объём файла, чтобы программа успевала покрутиться несколько секунд


## Результаты
В результате проделанной оптимизации наконец удалось обработать файл с данными.
Удалось улучшить метрику системы с ~3500ms до ~32ms. В установленный бюджет на обработку целого файла я немного не уложился, мой результат примерно 33 секунды.
Copy link
Collaborator

Choose a reason for hiding this comment

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

👍

Удалось улучшить метрику системы с ~3500ms до ~32ms. В установленный бюджет на обработку целого файла я немного не уложился, мой результат примерно 33 секунды.

## Защита от регрессии производительности
Для защиты от потери достигнутого прогресса при дальнейших изменениях программы написал тесты, которые должны укладываться в заданный бюджет:
Copy link
Collaborator

Choose a reason for hiding this comment

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

👍

longest_session = time > longest_session ? time : longest_session
browsers << browser
unless used_ie
used_ie = browser[0] == 'I'
Copy link
Collaborator

Choose a reason for hiding this comment

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

👍 clever move

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