Skip to content

Latest commit

 

History

History
56 lines (38 loc) · 4.33 KB

case-study-template.md

File metadata and controls

56 lines (38 loc) · 4.33 KB

Case-study оптимизации

Актуальная проблема

В нашем проекте возникла серьёзная проблема.

Необходимо было обработать файл с данными, чуть больше ста мегабайт.

У нас уже была программа на ruby, которая умела делать нужную обработку.

Она успешно работала на файлах размером пару мегабайт, но для большого файла она работала слишком долго, и не было понятно, закончит ли она вообще работу за какое-то разумное время.

Я решил исправить эту проблему, оптимизировав эту программу.

Формирование метрики

Для того, чтобы понимать, дают ли мои изменения положительный эффект на быстродействие программы я придумал использовать такую метрику: тут ваша метрика

Гарантия корректности работы оптимизированной программы

Программа поставлялась с тестом. Выполнение этого теста в фидбек-лупе позволяет не допустить изменения логики программы при оптимизации.

Feedback-Loop

Для того, чтобы иметь возможность быстро проверять гипотезы я выстроил эффективный feedback-loop, который позволил мне получать обратную связь по эффективности сделанных изменений за время, которое у вас получилось

Вот как я построил feedback_loop: как вы построили feedback_loop

Вникаем в детали системы, чтобы найти главные точки роста

Для того, чтобы найти "точки роста" для оптимизации я воспользовался инструментами, которыми вы воспользовались

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

Ваша находка №1

  • какой отчёт показал главную точку роста
  • как вы решили её оптимизировать
  • как изменилась метрика
  • как изменился отчёт профилировщика - исправленная проблема перестала быть главной точкой роста?

Ваша находка №2

  • какой отчёт показал главную точку роста
  • как вы решили её оптимизировать
  • как изменилась метрика
  • как изменился отчёт профилировщика - исправленная проблема перестала быть главной точкой роста?

Ваша находка №X

  • какой отчёт показал главную точку роста
  • как вы решили её оптимизировать
  • как изменилась метрика
  • как изменился отчёт профилировщика - исправленная проблема перестала быть главной точкой роста?

Результаты

В результате проделанной оптимизации наконец удалось обработать файл с данными. Удалось улучшить метрику системы с того, что у вас было в начале, до того, что получилось в конце и уложиться в заданный бюджет.

Какими ещё результами можете поделиться

Защита от регрессии производительности

Для защиты от потери достигнутого прогресса при дальнейших изменениях программы о performance-тестах, которые вы написали