Skip to content

Commit d36a77e

Browse files
committed
fix: case study
1 parent 7dbada5 commit d36a77e

File tree

1 file changed

+3
-4
lines changed

1 file changed

+3
-4
lines changed

case-study.md

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,9 @@
1212
Я решил исправить эту проблему, оптимизировав эту программу.
1313

1414
## Формирование метрики
15-
Для того, чтобы понимать, дают ли мои изменения положительный эффект на быстродействие программы я придумал использовать такую метрику: время выполнения программы.
15+
Для того, чтобы понимать, дают ли мои изменения положительный эффект на быстродействие программы я придумал использовать такую метрику: время выполнения программы для части данных (сначала 50к, потом 100к).
1616

1717
Сначала сделал гипотезу о том, что асимптотика времени работы программы квадратичная: отношение количества записей к времени выполнения в секундах: 100000/115 750000/61 50000/26, 25000/6). Подтвердил эту гипотезу с помощью теста rspec-benchmark.
18-
В таком случае для полного объема понадобится 4.7 дней.
1918

2019
## Гарантия корректности работы оптимизированной программы
2120
Программа поставлялась с тестом. Выполнение этого теста в фидбек-лупе позволяет не допустить изменения логики программы при оптимизации.
@@ -26,7 +25,7 @@
2625
Вот как я построил `feedback_loop`: профилирование - изменение кода - тестирование – бенчмаркинг – откат при отсутствии разницы от оптимизации/сохранение результатов
2726

2827
## Вникаем в детали системы, чтобы найти главные точки роста
29-
Для того, чтобы найти "точки роста" для оптимизации я воспользовался rbspy
28+
Для того, чтобы найти "точки роста" для оптимизации я воспользовался rbspy, stackprof, ruby-prof
3029

3130
Вот какие проблемы удалось найти и решить
3231

@@ -98,7 +97,7 @@
9897

9998
## Результаты
10099
В результате проделанной оптимизации наконец удалось обработать файл с данными.
101-
Удалось улучшить метрику системы с 4.7 дней до 24 секунд и уложиться в заданный бюджет.
100+
Удалось улучшить метрику системы на 100к с 115с до секунд и уложиться в заданный бюджет. Для полного файла время выполнение стало 24с.
102101

103102
## Защита от регрессии производительности
104103
Для защиты от потери достигнутого прогресса при дальнейших изменениях программы добавил два теста: прогон на 100к данных до 5 секунд, проверка на линейную асимптотику на основе данных от 1000 до 100000 записей.

0 commit comments

Comments
 (0)