From 9674701151c5fb3e714442961a18e47ccf8518ef Mon Sep 17 00:00:00 2001 From: hworoshch Date: Wed, 20 Jul 2022 15:19:53 +0700 Subject: [PATCH 1/2] task 7 --- .gitignore | 2 + .idea/.gitignore | 8 + .idea/inspectionProfiles/Project_Default.xml | 648 +++++++++++++++++++ .idea/misc.xml | 4 + .idea/modules.xml | 8 + .idea/rails-optimization-task7.iml | 15 + .idea/vcs.xml | 6 + case-study.md | 71 ++ chronograf.png | Bin 0 -> 40470 bytes 9 files changed, 762 insertions(+) create mode 100644 .gitignore create mode 100644 .idea/.gitignore create mode 100644 .idea/inspectionProfiles/Project_Default.xml create mode 100644 .idea/misc.xml create mode 100644 .idea/modules.xml create mode 100644 .idea/rails-optimization-task7.iml create mode 100644 .idea/vcs.xml create mode 100644 case-study.md create mode 100644 chronograf.png diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..13bbe5b --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +.idea/ + diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..13566b8 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,8 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Editor-based HTTP Client requests +/httpRequests/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml new file mode 100644 index 0000000..ec9c822 --- /dev/null +++ b/.idea/inspectionProfiles/Project_Default.xml @@ -0,0 +1,648 @@ + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..13f466a --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..efbfd54 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/rails-optimization-task7.iml b/.idea/rails-optimization-task7.iml new file mode 100644 index 0000000..6e7c09c --- /dev/null +++ b/.idea/rails-optimization-task7.iml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..94a25f7 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/case-study.md b/case-study.md new file mode 100644 index 0000000..ec0b785 --- /dev/null +++ b/case-study.md @@ -0,0 +1,71 @@ +## Подготовка + +- [x] Локальный запуск репозитория `dev.to`. +- [x] Настройка `TICK stack`. + +## Оптимизация + +1. При первом прогоне время выполнения тестов составило: +``` +Total time: 397 s. +``` +2. Я установил значение `:fatal` для `log_level` и запустил тесты в параллельном режиме, время выполнения уменьшилось вдвое: +``` +Total time: 181 s. +``` +3. Далее я решил поэкспериментировать и увеличил количество потоков до 6: `parallel:spec[6]`, но многие тесты начали сыпаться и покрытие сократилось до 35% — виден провал в начале графика. После того как я устранил проблему, покрытие вновь вернулось к изначальному уровню, но прирост скорости был не таким значительным: +``` +Total time: 160 s. +``` +Такое значение прохождения полного сьюта меня устраивало, поэтому я решил заняться непосредственно оптимизацией. + +4. Я использовал `rspec --profile` для определения наиболее медленных тестов. +``` +Top 10 slowest example groups: + Reading list + 4.48 seconds average (17.9 seconds / 4 examples) ./spec/features/user_views_a_reading_list_spec.rb:3 + internal/users + 3.66 seconds average (25.64 seconds / 7 examples) ./spec/controllers/internal_users_controller_spec.rb:3 + Creating Comment + 3.18 seconds average (9.53 seconds / 3 examples) ./spec/features/comments/user_fills_out_comment_spec.rb:3 +... +``` +Основным кандидатом на оптимизацию стал тест `internal_users_controller_spec.rb`. Я изучил отчеты `stackprof` и увидел, что большую часть времени занимает вызов `BacktraceCleaner`, после отключения гема `honeycomb` в окружении `test` я получил следующие результаты: +``` +Top 10 slowest example groups: + Creating Comment + 3.06 seconds average (9.17 seconds / 3 examples) ./spec/features/comments/user_fills_out_comment_spec.rb:3 + Reading list + 2.73 seconds average (10.93 seconds / 4 examples) ./spec/features/user_views_a_reading_list_spec.rb:3 + internal/users + 2.48 seconds average (17.39 seconds / 7 examples) ./spec/controllers/internal_users_controller_spec.rb:3 +... +``` +``` +[TEST PROF INFO] RSpecDissect report + +Total time: 00:17.107 +``` +Далее я удалил из спеки вызовы `Delayed::Worker`: +``` +[TEST PROF INFO] RSpecDissect report + +Total time: 00:04.699 +``` +И использовал хелперы `let_it_be` и `before_all`: +``` +[TEST PROF INFO] RSpecDissect report + +Total time: 00:01.073 +``` + +Общее время выполнения тест-сьюта также уменьшилось: +``` +Total time: 102 s. +``` + +## Результаты + +В результате проделанной работы мне удалось значительно уменьшить время прохождения тестов — с 397 до 102 секунд. + +![Chronograf](chronograf.png) diff --git a/chronograf.png b/chronograf.png new file mode 100644 index 0000000000000000000000000000000000000000..a01dbdb3e5b1a230df2da0b8388d65069192b6ca GIT binary patch literal 40470 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 literal 0 HcmV?d00001 From 3a7cc6d115157217f3c31a5d85d01445d245a33c Mon Sep 17 00:00:00 2001 From: hworoshch Date: Wed, 20 Jul 2022 15:22:41 +0700 Subject: [PATCH 2/2] Delete .idea directory --- .idea/.gitignore | 8 - .idea/inspectionProfiles/Project_Default.xml | 648 ------------------- .idea/misc.xml | 4 - .idea/modules.xml | 8 - .idea/rails-optimization-task7.iml | 15 - .idea/vcs.xml | 6 - 6 files changed, 689 deletions(-) delete mode 100644 .idea/.gitignore delete mode 100644 .idea/inspectionProfiles/Project_Default.xml delete mode 100644 .idea/misc.xml delete mode 100644 .idea/modules.xml delete mode 100644 .idea/rails-optimization-task7.iml delete mode 100644 .idea/vcs.xml diff --git a/.idea/.gitignore b/.idea/.gitignore deleted file mode 100644 index 13566b8..0000000 --- a/.idea/.gitignore +++ /dev/null @@ -1,8 +0,0 @@ -# Default ignored files -/shelf/ -/workspace.xml -# Editor-based HTTP Client requests -/httpRequests/ -# Datasource local storage ignored files -/dataSources/ -/dataSources.local.xml diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml deleted file mode 100644 index ec9c822..0000000 --- a/.idea/inspectionProfiles/Project_Default.xml +++ /dev/null @@ -1,648 +0,0 @@ - - - - \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml deleted file mode 100644 index 13f466a..0000000 --- a/.idea/misc.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml deleted file mode 100644 index efbfd54..0000000 --- a/.idea/modules.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/.idea/rails-optimization-task7.iml b/.idea/rails-optimization-task7.iml deleted file mode 100644 index 6e7c09c..0000000 --- a/.idea/rails-optimization-task7.iml +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml deleted file mode 100644 index 94a25f7..0000000 --- a/.idea/vcs.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file