You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: case-study-template.md
+23Lines changed: 23 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -54,3 +54,26 @@
54
54
## Защита от регрессии производительности
55
55
Для защиты от потери достигнутого прогресса при дальнейших изменениях программы *о performance-тестах, которые вы написали*
56
56
57
+
58
+
59
+
Добавил прогресс бары
60
+
61
+
### находка №1 Многократная итерация объекта sessions для создания users_objects
62
+
- callstack из ruby-prof
63
+
- одной итерацией собрать необходимые данные в объекте sessions_by_user
64
+
- время выполнения приложения на 15т строк сократилась 7.5 секунд до 0.9 секунд
65
+
- исправленная проблема перестала быть главной точкой роста
66
+
67
+
68
+
### находка №2 Неэффективный алгоритм с многократными проверками для сбора unique_browsers.
69
+
- callstack из ruby-prof
70
+
- Было принято решение заменить неэффективный алгоритм с многократными проверками на более оптимизированное решение, использующее встроенные методы Ruby
71
+
- время выполнения приложения на 15т строк сократилась 0.9 секунд до 0.6 секунд
72
+
- исправленная проблема перестала быть главной точкой роста
73
+
74
+
### Находка №3: Неэффективное добавление элементов в массивы с использованием оператора конкатенации
75
+
- callstack из ruby-prof
76
+
- Было принято решение заменить неэффективное добавление элементов в массивы с помощью оператора + на использование метода << (shovel operator). Дополнительно была применена конструкция case для улучшения читаемости и производительности.
77
+
Время выполнения: точные измерения не предоставлены, но ожидается значительное улучшение производительности, особенно для больших наборов данных. Операция << имеет сложность O(1), тогда как + создает новый массив при каждой итерации, что имеет сложность O(n).
78
+
- время выполнения приложения на 15т строк сократилась 0.6 секунд до 0.5 секунд
79
+
- исправленная проблема перестала быть главной точкой роста
0 commit comments