-
Notifications
You must be signed in to change notification settings - Fork 193
refactoring&&optimization #2
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
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -12,35 +12,27 @@ | |
| Я решил исправить эту проблему, оптимизировав эту программу. | ||
|
|
||
| ## Формирование метрики | ||
| Для того, чтобы понимать, дают ли мои изменения положительный эффект на быстродействие программы я придумал использовать такую метрику: *тут ваша метрика* | ||
| Для того, чтобы понимать, дают ли мои изменения положительный эффект на быстродействие программы я придумал использовать такую метрику: замеряить время выполнения после каждого итератора | ||
|
|
||
| ## Гарантия корректности работы оптимизированной программы | ||
| Программа поставлялась с тестом. Выполнение этого теста в фидбек-лупе позволяет не допустить изменения логики программы при оптимизации. | ||
|
|
||
| ## Feedback-Loop | ||
| Для того, чтобы иметь возможность быстро проверять гипотезы я выстроил эффективный `feedback-loop`, который позволил мне получать обратную связь по эффективности сделанных изменений за *время, которое у вас получилось* | ||
|
|
||
| Вот как я построил `feedback_loop`: *как вы построили feedback_loop* | ||
| Для того, чтобы иметь возможность быстро проверять гипотезы я выстроил эффективный `feedback-loop`, который позволил мне получать обратную связь по эффективности сделанных изменений за 57с, 40c, 34c, 23c, 19с, 11.703119с | ||
|
|
||
| ## Вникаем в детали системы, чтобы найти главные точки роста | ||
| Для того, чтобы найти "точки роста" для оптимизации я воспользовался *инструментами, которыми вы воспользовались* | ||
|
|
||
| Вот какие проблемы удалось найти и решить | ||
|
|
||
| ### Ваша находка №1 | ||
| О вашей находке №1 | ||
|
|
||
| ### Ваша находка №2 | ||
| О вашей находке №2 | ||
|
|
||
| ### Ваша находка №X | ||
| О вашей находке №X | ||
|
|
||
| Для того, чтобы найти "точки роста" для оптимизации я воспользовался встроенным в рубимайн профилировщиком rbspy | ||
|
|
||
| Вот какие проблемы удалось найти и решить: | ||
| - Убрал поиск по айди пользователя, без надобности многократно проходивший по всему массиву | ||
| - Переписал все за один проход, избавившись от многих ненужных лишних итераций | ||
| - Выкинул все неиспользуемое чтоб кушало меньше памяти | ||
| - Заменил строки в хэшах на ключи, для оптимальнейшей работы с памятью | ||
| - Отключил гарбаджколлектор | ||
| - Убрал парсер дат за ненадобностью | ||
| - Избавился от прожорливых регулярок | ||
| - Заменил json на multijson | ||
|
Collaborator
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Какой профит дало? Из отчёта непонятно. И так по каждому пункту. |
||
| - прилично сократить число строк кода и убрав документацию, сделав его самодокументируемым | ||
| ## Результаты | ||
| В результате проделанной оптимизации наконец удалось обработать файл с данными. | ||
| Удалось улучшить метрику системы с *того, что у вас было в начале, до того, что получилось в конце* и уложиться в заданный бюджет. | ||
|
|
||
| *Какими ещё результами можете поделиться* | ||
|
|
||
| ## Защита от регрессии производительности | ||
| Для защиты от потери достигнутого прогресса при дальнейших изменениях программы *о performance-тестах, которые вы написали* | ||
| Удалось улучшить метрику системы с 57 до 11.703119 секунды и уложиться в заданный бюджет. | ||
|
Collaborator
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Эм, а что, начальное значение было 57 секунд? |
||
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.
Хотелось бы видеть в
case-studyбольше подробностей о том, что конкретно выдал профилировщик, как вы это интерпретировали, как исправили и какой получили результат. По шагам.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.
В следующем задании надо будет так и сделать.