-
Notifications
You must be signed in to change notification settings - Fork 177
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
base: master
Are you sure you want to change the base?
Task1: perfomance #123
Conversation
There was a problem hiding this 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 |
There was a problem hiding this comment.
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 на массиве |
There was a problem hiding this comment.
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 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Уже маловато, хорошо бы тут увеличить объём файла, чтобы программа успевала покрутиться несколько секунд
|
||
## Результаты | ||
В результате проделанной оптимизации наконец удалось обработать файл с данными. | ||
Удалось улучшить метрику системы с ~3500ms до ~32ms. В установленный бюджет на обработку целого файла я немного не уложился, мой результат примерно 33 секунды. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
👍
Удалось улучшить метрику системы с ~3500ms до ~32ms. В установленный бюджет на обработку целого файла я немного не уложился, мой результат примерно 33 секунды. | ||
|
||
## Защита от регрессии производительности | ||
Для защиты от потери достигнутого прогресса при дальнейших изменениях программы написал тесты, которые должны укладываться в заданный бюджет: |
There was a problem hiding this comment.
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' |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
👍 clever move
No description provided.