-
Notifications
You must be signed in to change notification settings - Fork 195
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
Made faster #157
base: master
Are you sure you want to change the base?
Made faster #157
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.
👍
@@ -0,0 +1,61 @@ | |||
class Parsing |
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.
Parser?
Еще добавлен тест на время выполнения теста. | ||
|
||
## Feedback-Loop | ||
Для того, чтобы иметь возможность быстро проверять гипотезы я выстроил эффективный `feedback-loop`, который позволил мне получать обратную связь по эффективности сделанных изменений за *время, которое у вас получилось* |
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.
*это был плейсхолдер*
Моя первая цель ускорить обработку файла в 25 000 срок до 2 секунд. Это примерная оценка из "потолка". | ||
|
||
## Формирование метрики | ||
Для понимания процесса обработки данных я использовал метрику *Benchmark*. Так я могу видеть время работы программы |
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.
У нас получается в процессе этой работы несколько метрик:
- время обработки файла X
- время обоработки файла Y
- время обработки файла Z
каждую метрику мы используем только для того чтобы понять что очередная итарация оптимизации была успешной, глобального смысла они не имеют, но они и не обязаны его иметь
|
||
### Моя находка №1 | ||
- Ruby-prof в режиме Graph так же показал точку роста в Array#select | ||
- Самое главное что я сделал, это первую обработку данных. Что бы все было структурировано и была некая связь между пользователем и его сессиями. После этого внес правки в весь код, что бы тесты начали выполняться |
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.
по описанию не совсем понятно что было сделано; если имеется в виду мощный рефакторинг на отдельные классы, то это оверкилл скорее
самый мощный эффект даёт простая группировка данных в хэш
тут собственно сложность становится линейной, это самое важное изменение по сути дела; поэтому такое большое значение и придаётся сложности алгоритмов, что она оказывает самое большое влияние на результат
|
||
- StackProf показал основное время работы в Object#work | ||
|
||
- StackProf в формате json на много интереснее получается и так же информативно |
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.
stackprof + speescope = one love
- Ruby-prof в режиме Graph так же показал две точки роста 71% в Object#collect_stats_from_users и 50% в Array#map | ||
- Я решил изменить метод collect_stats_from_users и теперь он сам обрабатывает все данные, без передачи блока и лишнего обхода в цикле | ||
- А вот метрика не сильно изменилась, нужно менять подход | ||
- Проблема сохраняется, нужно внести изменения в исходные данные |
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.
не совсем понял в каком смысле изменения в исходные данные
|
||
## Результаты | ||
В результате проделанной оптимизации наконец удалось обработать файл с данными. | ||
Мне удалось обработать весь файл в среднем на 28 секунд. Это укладывается в мой бюджет. |
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.
👍
No description provided.