From f5b05adf642a1a3158422174fc297079e1126411 Mon Sep 17 00:00:00 2001 From: Alex Korzun Date: Sat, 22 Mar 2025 01:34:49 +0400 Subject: [PATCH] chore: improve RSpec performance --- case_study.md | 123 +++++++++++++++++++++++++++++++++++ images/flamegraph_after.png | Bin 0 -> 29213 bytes images/flamegraph_before.png | Bin 0 -> 57597 bytes 3 files changed, 123 insertions(+) create mode 100644 case_study.md create mode 100644 images/flamegraph_after.png create mode 100644 images/flamegraph_before.png diff --git a/case_study.md b/case_study.md new file mode 100644 index 0000000..e75369a --- /dev/null +++ b/case_study.md @@ -0,0 +1,123 @@ +## Актуальная проблема +`test-suite` рабочего проекта выполняется достаточно долго. Необходимо оптимизировать его и ускорить процесс прохождения тестов. + +## Начальные данные +`test-suite` содержит 7673 экземпляров + +```bash +Finished in 6 minutes 36 seconds (files took 7.37 seconds to load) +7673 examples, 0 failures +Line Coverage: 94.95% (12600 / 13270) +``` + +## Оптимизация +### Оптимизация - 1 +Для начала решил прогнал тесты в параллельном режиме с помощью `parallel_tests`. +Использовал 3 потока. +```bash +Finished in 3 minutes 11.7 seconds (files took 2.88 seconds to load) +``` +В результате получил ускорение прохождения тестов более чем в 2 раза. +*** +### Оптимизация - 2 +Решил `ударить по площадям` дабы еще меньше сократить время на feedback loop и +написал скрипт который заменяет все вхождения `create` на `build_stubbed`, если тест проходит, то оставляет изменение. + +В результате изменения произошли в 170 файлах(к сожалению забыл поставить счетчик непосредственно замен) +Как итог: +- в последовательном режиме ускорение на 1 минуту: с `6 minutes 36 seconds` до `5 minutes 35 seconds` +- в параллельном режиме на удивление улучшения практически не произошло: с `3 minutes 11.7 seconds` до `3 minutes 4.3 seconds` +*** +### Оптимизация - 3 +Решил продолжить тактику и сначала искать точки роста с наименьшими затратами, а уже потоим переходить к более затратным по времени +изучениям больших отчетов профилировщиков, таких как speedscope, cachegrind, где точки роста не всегда очевидны(в случае если в тестах нет откровенных проблем) + +Поэтому я воспользовался инструментом `RSpec-DISSECT`: +```shell +Total `let` time: 04:12.176 +Total `before(:each)` time: 04:09.653 + +Top 5 slowest suites (by `let` time): + +Boardgames::RollDice::MegaRoll (.../mega_roll_spec.rb:6) – 00:20.066 of 00:26.192 (401) + ↳ player – 2666 + ↳ user – 1586 + ↳ boardgame – 1274 +Collections::...tiblePresenter (.../collectible_presenter_spec.rb:6) – 00:11.224 of 00:12.200 (93) + ↳ player – 287 + ↳ user – 186 + ↳ account – 186 +Minigames::PlayProcessor (.../play_processor_spec.rb:7) – 00:09.942 of 00:10.964 (49) + ↳ player – 246 + ↳ user – 147 + ↳ minigame – 117 +Events::Instance (.../instance_spec.rb:5) – 00:09.523 of 00:12.136 (133) + ↳ player – 616 + ↳ event – 443 + ↳ user – 399 +Collections::...eshipPresenter (.../battleship_presenter_spec.rb:6) – 00:08.142 of 00:09.192 (95) + ↳ ships_storage – 309 + ↳ player – 286 + ↳ user – 190 + +Top 5 slowest suites (by `before(:each)` time): + +Boardgames::RollDice::MegaRoll (.../mega_roll_spec.rb:6) – 00:20.374 of 00:26.192 (401) +Events::Instance (.../instance_spec.rb:5) – 00:11.653 of 00:12.136 (133) +Collections::...tiblePresenter (.../collectible_presenter_spec.rb:6) – 00:08.166 of 00:12.200 (93) +Events::ProgressBuilder (.../progress_builder_spec.rb:5) – 00:07.653 of 00:09.040 (167) +Events::V3::CurrentPresenter (.../current_presenter_spec.rb:6) – 00:06.789 of 00:09.037 (66) +``` +Очень удобно, сразу видна необходимость в первую очередь поработать с Boardgames::RollDice::MegaRoll тестами. + +Заменил в самых медленных тестах `let` на `let_it_be`. + +Кроме того в нашем проекте в хелпере для всех тестов глобально определяются через `let` player, user и account. + +Заменил их также на `let_it_be`. + +Как результат, избавился от основных точек роста и почти в 2 раза уменьшил время прохождения самого медленного теста c 00:26.192 до 00:13:543. + +Промежуточный итог: +- в последовательном режиме ускорение с `5 minutes 35 seconds` до `4 minutes 20.5 seconds` +- в параллельном режиме улучшения не произошло: `3 minutes 8.3 seconds` +*** +### Оптимизация - 4 +C помощью `EVENT_PROF="factory.create" bundle exec rspec` сделал отчет о 5 самых медленных наборов: +```shell +Top 5 slowest suites (by time): + +Collections::...tiblePresenter (.../collectible_presenter_spec.rb:6) – 00:06.944 (361 / 93) of 00:09.022 (76.97%) +Events::Instance (.../instance_spec.rb:5) – 00:06.631 (776 / 133) of 00:07.745 (85.62%) +Collections::...eshipPresenter (.../battleship_presenter_spec.rb:6) – 00:05.952 (370 / 95) of 00:07.777 (76.54%) +Events::V3::CurrentPresenter (.../current_presenter_spec.rb:6) – 00:05.881 (1406 / 66) of 00:08.221 (71.54%) +Events::V1::CurrentPresenter (.../current_presenter_spec.rb:6) – 00:05.731 (1384 / 65) of 00:08.142 (70.39%) +``` + +Оптимизировал каждый из этих тестов следующим образом: +- Строил `flamegraph` отчет по тесту, где видна проблемная фабрика +- Оптимизировал фабрики в основном 2 путями: где то использовал `trait` для ассоциаций, где то вынес определение ассоциаций +из фабрики прямо в тесты только там где они необходимы. + +Приведу пример результата оптимизации на примере наиболее затратного по работе фабрик теста `Collections::...tiblePresenter` +В отчете можно увидеть довольно неприятный каскад, который удалось сгладить путем выноса ассоциации из фабрики. +Ускорение получилось с 00:09.022 до 00:04.561 + +До оптимизации: +![flamegraph_before.png](images/flamegraph_before.png) + +После оптимизации: +![flamegraph_after.png](images/flamegraph_after.png) + +Промежуточный итог: +- в последовательном режиме ускорение на 1 минуту: с `4 minutes 20.5 seconds` до `4 minutes 0.7 seconds` +- в параллельном режиме улучшения не произошло: `3 minutes 0.2 seconds` +*** + +**Подведу промежуточный итог. Используя только общих приемы, без вникания в логику и составление stackprof отчетов удалось** +**сократить время выполнения тестов в последовательном режиме на 40% с 6 minutes 36 seconds до 4 minutes 0.7 seconds** + +## TODO: +Запланировал на следующую неделю продолжить оптимизацию и использовать `stackprof`. + +План построить json отчет с сэмплированием и найти точки роста с использованием `speedscope`. diff --git a/images/flamegraph_after.png b/images/flamegraph_after.png new file mode 100644 index 0000000000000000000000000000000000000000..cb48e0b44b1327cbb4247de12dae04aeb609751b GIT binary patch literal 29213 zcmeFZXH=6}_Xnzo!syUMLFvK>D1?YKslgFskfx&afP!=qq=t@&N(V=(AVfhxL_nkj zLWxRKTIivLNC^P~i4Y)=kmN?^b!OiGdq3RIcgb2=IXve%ZJ)ExZoi#`tL8>LheZzW z+qaL$_z#2Y`}T3p?c2w3ocj>_NyLY%*nRu<+j(BPbk+FMC8?|azHXjAuKV`M{|R{v zGC6ROzr(55Sid8>yiPwCT@^ZMdd%|FayS#_3vZT4y>tk-* zFCMqyK1=&$~f?0<~Vl~dL}Ze021^6zQfg=vnz z>dFQ*LQhcce4zSNcJpxfI~w6D8I~E9BW+)+8DG~U8tbVT+zrTba*s!=C7%i@ME};~ z@$v131@XDJmy86+SNdrYziHwF$`)-++Y^BCO}71}f;fTlvO~I4??b(lBC%3ck0G7N>Ja+h;HNOm`P{8}r)y^j3# z!J~UC75u)gr(Vm|vLr54MQ~iPxFZ_MagWX>ww0@mv74FMzO(Ey_rCpcp8Gi2rTy%W z2>Y{d-+?EO_HnVlkFq}o&pCe7a?U+J@T1Ie{M(BcEiV}xv%f7}{9Rq40Uo}AK+Mf{ zc2^kB8#aM9W~N#$z7VC`cYK{)l|mqQzctyX6Qac~LRCAb)|Dk=cM%xOG!!T_}_8Ux^8g!Kh4?y=}LP92Hw>I z0%0(i5==$O*WVqetf{F9Ja-;={yc#F1|T358hASd01c4&tCJu77`O(w_eH@m6Mx2IZHJwsf5 zYz;giZ1S+j&{I=U(fR)V|J3|5;=fwj{L@nTyxO^cH~m-D|806Rz}5efFN8g2px!@Q z^Pk55uKZ6!9pJa6|BDoV(fRvRHlg(n>j3}WG`+(C2BzWr_UZ34Hn?~rWdACb>)G*9 zhQ^mmT*uFF9F{&TwAum_OaUn4M}NC4C}`%}xtCH_($%hNM(#YOCL*XN+v$-EULDsz zXsCbDfPeor{>RikH`rLuyW`{g7c}8$QcF0w_t{fIKdGNFW2w~#2SpoS=jNBvzqfBc z2j{;EOIKt1#gRdxa{p5!rT?6tzg<({UoZb?enUzszI>nU@qc&ppE^#z{{J4}ujj|P zx#!O6TOIs=sk`_r;QvmF-A4Z)$Nh%Gk8fW5-#UGMg4mCl{A)#5W9~^+a@@K3uSY-D z#9jv1&t?3x?>~3r|8Rkn{?9}8-z53T;{UMAk8AGdP4$Bk-)Zyn!u?;F@>Bf%m-ziD z#s61P`KgTjP|JR*hCemj|27DI^2Sfz_$EMp%8j3L<8S5ar%v@#r}}1i{IoazW{JNG zKY8OPZ~WwqpRVZtQX7BzsebyYzS&hjeYih;xIeu5|9_8f=wlAA$iEK3XIhKAUKuH~ zOawmsvGjZUV(O2KI9ehi0VYSK-ZpdOYkN1nYYrZhd0WD*X#4KB4r^O28nyME6m+IJ z6t7(D*b-J;305dazHo&7t!Z(;`OI--vCk~&$*o&vQ9Nt(+|vV1FtVC=+!|m%$C{8$ zbBJHqa&flE7;ybSM~oQd z5CxmWeKGi>OCzvbD_bO>A_i$Ct$(XeaH;lgl-*`kRY||LMEa0<9BgU-4WahqM#|A{ zaT3WXf`8kIHlm!4q0EW8*>mDDF*jugPILJk-p}Fv^nLTmOtH7YYnkWDAN)g+|F~Ul zL4^6+E7sia&Hr!w_mzP@zx6LQSN@^E4^?X{IL50h-hQf19P}^uO?m$N=4|0&Z#h#7 z7>E%eGU$ulWYwR1QUFJt<5|Nh1T9Z{)=l9$wN=AEd{py_7A2$Lzwk@FRsY390HNM8 znVR|c^z;omP_5L2&AvRzvRC!^Dz`BcVCh3Vd zT;t@xncuv zEZ@s)UCu;)Q0OvKsE19_d9TEVQx!=#4M?y^vm;vdR=$KnUFC7?c)I3^J*o@(rLWjK zh+UPNOB}CctsTj?PYG%AEl9n^asNW;KV!sT;@_`X=w?R+Qy-{maT&+@#|Q2##tz9* zCv~<~CQmbhRx<*3Wh{rOd{Zw@-A!zZT5SwnR?tW`D_up}hGE?f3_sZ$f5@lzl)3$N zM3vMiJoL4d_)-uy{##3A(~C1&p5{4f!2D3gc;JwEUI|f7HxHU~K}J1&=Dh!1tw=Z^ zsqz_0RQC)v$KKa48!gC;vR>btxkN9uV2|U60^l6&YA-N0`+r$3`K&TD96%5TUrzfR z)ZS_kdZ%-Gvt_EYln#HIKSmw|h^sqarH#x4b%~%6t{~R4G)hxZXV={FrnlsqCM>LH zv$y%+^6T~CM3=J?y*P<{O^rxGmfv#abYz`-cK`BwGp?8JjyZ61bPxI6HC*l8b%o^? z>*@5FYQ{iduT^Z%=#U|wZf0fZ-qTIG2H8qSXsSgDLm!rbU5W0g>dLotbDa+wR+iDY z;*Q<($o;yP|H`>}#LWjEE9(u4Wd?qf4avl{mujDz| zyxX%%?*8g|f%`lA-75Ztd(KLvm`C6r&I#gB?wsHX&{uh5QMLI&?6vOW1FxNCC{5Cv~+(_7oXndUYRdnn=z-LTDDe zf9k=oIU^MTgw1-LV7tJiWc<8$(X`jRdelCxm+UTMJ`Id-&2Y;n;lL8tU_*Gmn=o@H`tKplr8XC0ir^)7M$kFGvjgo`>2hK`m?F{`S9dF zxEQk~n|We~4f(CJsN{FHG#|$j?}A<_yDA8s!Yav=?Nem;K|&^=g}|053T>_X=41q& zD#m-6n_3r(FeXp<*;LQC`wwhYP3J0hr;#I?8(Pjw67SLO`6fm9IJK0+VsjC zP!4XPzT{8zM$1ZpdA-F6X~A zvN4~SvH+*Eyi%R6O)_zp>rUG_WP%l4daJqTDnkOj1lqyOPs4^iuTPK_uW$xmbN;oa z^K`vnMSZRU5f6Rhs@n$`9_uP{bqov_zYYrheJ$+BhK-Ma1h0?kpTEO(%pEd38|^(! zid*O>yTncrv?=4h;d=+5x-S!fQnDSyT2{9WyC`$I9)OyqsgR>pEqI z_T3v2lnF#Cu#?)fFy1osC^Wf2UYP{0HSlrp5|LGpI(u`irk6M5J08mJ*eg14Y)-o1 zw|@-3TR}o6tU#we9#_K}_b^gUUhr;vG4HQ2lGC@D%+kA|xKUr>Bu=eZ4YN({u!71! z;XM@tla|u_xi!zB(y`lbgnOWM7s0{<+NDamR`#Yk0;fAol78VU>~XWbJc{5{OnVU# z;W`b?lS4Krkb6d^4>l;K#J>EM9pKZ=nMMu4%rEzQirubD7`P zK5PVLk&+;9cb0t;YJmkZ>>0-tALR5i3ExTh=X{IE@mF-3PlYEr2lrbzGV}$mV{_e4 zGA6)+LwW>kPC?&%O6F-dsT635a?c7W)U;8c@yH$9?S8QIJaGzw?WDwI%&R+ zBySD9C#ei#KHeFEOj)}uJe0F{s#CEkbfZ_jLikAjWB1D`8@oF8M3iK>Y)6AHD$&-K z6%w!>(z|G?Hs~X`heteiGEFEjGaPnxsuBL@v{+my4`NQ}Tp}9qNT* z^}ElHsl4tCfn{S59LZUCL49;bbFYChhNAlTl6~j{{EJp-P0X^j5&4PIr&G43uij$c z&pb4G;71G!-vW$UQ}ptKC`CM{zz=e(p_~t0mv4Z8UbaTNJ4XHuJ2xbX$Vr+G$?t-o z52>`-14&ma9o(p=7(+(>@;hBz1*XyAAzp*7+c`QhhK&{e(b|)x(~^kq1d56=rx4J- zQSGDKzEu-yiz!X&K@#+?+MO?wB?ZJS6L3>2jjwznQ|Dj6LH*eGd%}cbVRC~kV28TP zlcv@xC`=vXP&%}RljpL-t~8mdJ66`gg$c%oOBRg}7uJov4?>oDtk>zBMt-~SVTX~6asIokA%Y0hiTg4GpTh`s8_0Q7;a;KYcNu8Cl4Dq z2))20W_f5LKGPKRZeOY`Nvb;GQVGD?r%n2|1=95F)mNiTTL-2&e^vhTVCy4^U%fxR30gj?(55Os4n zF1maaV!g)qO%Zsr$i{e%?j3v={;k8mZZgLs9D|A83x~YjG*BKVFRU!YCfeE+^^jLi z2(=3J3v_+EJ?bt#XWMGVc29(S>7)$bp&lUWnGn!1>@2Bn|CI7kn<-8qV1#DS%8*(R z$>;uJ-C7;2`TLZWIg*6%-b+xdWtxlLxbpFFuOtqInOQ_fU%0>8F*bjc9)G&yqNej( zlfgZGnV1tYO6SY_>CHgU@cOVk+w3ZCl}Wq=9xArCQ{9@a^&pk2aH*aDDzl%XN+8DE zel=Umto3xuhKQy_++U~9s`35ve9P=pc~u+Ow+A>Ki5&Sz!uVFE^-y5~Vu6aUbaNtB zA?EFS4oX+8jDmtDpDQ6&JW{&vH<$xWO~I1%fUwZ2fFT8!Diae~EOxNVjn1Z;b4;Z` zyP0^V7Fqp31gfM6r}*+Pou7CMyQ!)`MR3lq<%I4N$s z?u|48tah{W5Ll=rCMA8;wSv%&{4`A^WMMP4sXM5=9-5`MTPlyCMmcI&oPLC!xTD3a|Tr}tm+t7 z<+L$yoqT$-iKj=<#xVwCzz-XZwJ1#@=QcMV;vu%|Y!ud_VU;FMbVAOfuIW?yx3-Su z=!IX@qIMf4?kk;cBZJk|vFC%scIOY{It_=638`0LAoYMUNJ?1X<;ktu=+YkF=yxG| zPxsPvwq38c@_Uszgc2;5(Hd`d;tl~utDDhk+dg}g4JabGWl<-31MT;aAUN#w3OpV8 zT~};77^NHLOj`t`RlX}~xIL7-Iap4%04{j%jW+h?qRy>-C9;YwSkw=y+Y_40S#s_r zP4Fl^@jZh5(9Ja68oM=GMkDZeNfG>M%Scp3CB13HyiykQEQADE9;jmY7O(at9T6(V zf&zlHC_uh98EZl9m-RM?O+yDY%vR&gss_|c(FO3R%_^fLsTy5TJ8)X5Zr81eo4~6R zZ_3J} zGN6YiD{Pt%a72|5x&Xa2G{6&9d@(YtzIi|TDEnx=7did){pN({UH~BakI_H5HgE8z zR7SB)$CTK5V`9)9LxqMlg)U6pB5Ld9f#EM(D@YKp6l~%Z`7ksRU#X`NmwTJG zSaAqgHw&OuG})2J*R>mS_r8{Cq?%Iv@715b(j3kB5DqhLROHDh3it><}R zb>p4hYav!gM(Xa$S(QtX?5$JGFv*d!W|7R|5f#?839q)9<@Bnl^WwFm?;mBmtt*%e zp?xD1!C`324*#iN9YMO8O|N)f?c$mJqkN?Vis+KA1`*!hw3e{BRNLsu0vuX+3@I%n zF7vUpm9V<&jjC^0TFXgBkUU4k)^le%SQ~bB1>}>*GaO?-HX6F;>ua%2ncg!V1(D#n zvLLFn)}4jtfn)ZtPeI%AV@Z|O*)xk{ks$ z_6JmnW=n*41+R=12TZ!%C2zLw?Y#)4LjX?9u1jU%j#LvP->J9Vy6JAk7Zz(M>nSI$ z3QIFjBl!0y;^~PllC@Fj+8)`+VYzqsPd*~}j%?vlNe8+IjocPAqfH>7FGLV)jntF; z@dqr2C5_BXQCfb~O-zIj!XoGCq6)z5u7vn-`@hgiFvazm#P3zW?=P0vq< zh%eiMXXGRImi{b5Yhj0a8;>NC3N#2pP#`eu^qQ`}K8@BCY${5?PudlxQmVprz#+pg zH~(O^OzE)t^Zmycm)m0>Y3x<1BP6>d8*FLgRiv}8X>QPZW}df%0*SQ{+f-_}OCG?( zbTaEj>o+^r+oubOmq4f*k4%JlTIDh}?pF)=r!Gq-*ux9udy?)$n?24~+SG|Q72P6c z&NR?Fmy;2Yys)jMp^>>hJt3?s3bs4GiQ?KI2a?VMGPUpim+qm~GOe_kC^hf~FG`Qfs`s|mg{=EPK{K_40XJQEe{@?LrGcRVxzIZ1$Xd5Ro0Y<0 zzO*m1_AkB3d0D8HnfB&Ll-aN_t~GLHvY46X*CvEL#paC3Q+MeZgdsFJR63dGdM`G{+45dNL-*MXic+%t*o>=WkE{aT z8Ax9yrOHxUh8s@pSffYKliA_la>P$m4t(_#3NQdkS(ZdIGN)sdFT_!x+^p<6scrEO= ztB#0Ed(dZIt+QQ4VLr2S)876#LU+r727&%5jBjJLRy9O9R@q}V%Zq}Q zB)oeNcXx>6XO=g7)R~RKiE9$g%lB4mZS6oTcv_Z^dzwf#6dly^tcqv*#5Cds)1OXm z*(lgV_8lr|+->=Q@+a2I5t=i2Cj(kc4{MK@Opls@(2L~p`U{AfXZ$IJ6usaa*w zXz225u@H#LbJC=4L5LoPn(u%Mve3y}BzPAccm#Ru*bBDCJ$9OhK{RU5g^)pHGxBt> zN7!(dXlB#Z6OQ!u&A=H^7(gP)Dp)u<^gLtpYkneTr@yQw5p$tG-NGraX{GO3o?C0} zxvkYn%?|J2NyofWfk;eWTFbNk2B>LuiX_{nq0Pqz=|1U?!Umt2DN>ukWzG)YdHL!qL6r}gF`j6qCmJ+98aKeT-&HS$BJw>{G%DrhMvy$mLGK*h7AK|&`aB=Kv7 zBA>3Nwi&wR%*>xvwuPplq~gsrRGM*-#M3_=KM_8=9l)6R_G8Q>b)9>x;AzDC6Ipm3 zZ9a1@h&8o9{SoZ~6`uAodRpzYSy-^+WMmR^dDErdn7-h>{4Rnrr0f|iA##TWIaK0= z_nuY`h1XBLw4n7TXqSp>gm2NdKjz7mfE-u`VZZSmthtRV@I(kOhRb$s>Ssb2{+585 z%f#vv-T0wv7D7SoA0?yOvXCw`bxX8I_g-9htXi%Ufy1 z6&iM+HO=N|f$NOrZDYLj@@KJr?8bO<#Nbg@CGkr0wX`nj8_7qzjs{uuqB6)6?lqew z4y<`}>tm(nnn;(g9bZ@}ya6J}XQvcAF>hLE9g%Um8@cxwFfS9WU^`|VCTc;Ys2ycNa zR@`qCV^n|*pvVmjth8UVSZjGpCNY|XL#@spn|}kaX}BOBwivW*(I`r=-=6#}|8Z=M z_l9BT41Cujck5#hWac5zDI}T}$m@*^TFcN2>K*F{yGH2Pm5j2@ol5&W>|`oRCErw3 ze`}Fe>)9%wSVh_`+C}$Fni;P7#gZdEA>vw%VXJ<;Qe`QNIpdlIS&nJ=qP0Q9lm=9W{07Mb7Jejli1jj@ z^tR>G7M=&N(BO25+|3A@K5r#&udo-0Nhn&*$DxXg`;;gS-UWa)BSgfD@n?kLT@F

nilgzm$JXQx)mIS6dvS6dvfcz7u?aIO7maAM-OD7*mVhq0fRf6tWo8 zTQ1iXg-;{HI)kOZupPGV#kjZD1_6d(m_>P$<7!^)%NflFHX3nGd2ev#JBeS)Do$^& zC$mz{RJyxJZl4$eg0*KSRL^pyTr26%ho?4s+@RswPcAP3)O&A_JfCYwMXgp!KVHcM zjgY5mDqB;+F{6_7!2^!>r(GYuK>Ngq!oESM1h?-zET==a_S#Q=aIK;0X&-AZ45D z*3ggaUZR{!J*RMmGll%AOK8jREo{TQE%BCOJ!|0^a=p{})u;`jOl*5J>+|j|w`tGO ziZ$oPBA`TOYi8Q|%wDeUxkz&XlHt9^0Jg({8Nn3GPa`^|nVHBr`dK8-r(8bbn$!{k z=wYmlg-$TQwt9HIDkwsr0Q(GNs=GL)QQW9m8`0x9l z3;{Tb5k0~H@O{`wz|Eu=j$+GpWAWS@l}MNu5;P+9#S>FGt@zg-YZ?KuVat&-#XN9Z=?8374DDliPalw zDRbSQ4O^u`jrj=P%kq8V77hm_^HZYzM;mG{1+%X59&yPp+6ZDk$i=kQD^W4f7$olg zX#1BHOFl)r#LOm2zwV>rNOY@GO71zCxLYkrUsf?1x&^7zQFm$B@NEwdSN|b0*+Dir zY0N8{^{Lgf=VB0CdTT{p%dn@;>DgQRu%3QV;hSQQ?OP%j?uRGp`%tDQ%NyU37Y_{i z;%dSLm>uT@cpX)O?X=bgDst^zpLY35I8nKX&*p=bJ~rEYF)@PFn7*p-P3&2JKkBk# z_sHRHx1(Xt$8m$&J9*b6Z#fjiBDqR?&7-wKs~(Mo$l>qa&GvOjX9lw6e5M8zbCq~X zhN}cE*=Tl&hy1u^6qde#R6M83)}7YQyKmer91pk!`xJm65<`L zJAW_G1A1B*pAzo#jF)Jv|44i$vaZ|*~ z>%9=(7rf)Db+wYBgvuvQpWt4XZMI*uArx1D#KiUC+_Uh{@OP2hEQq~>zG2VXd~=31 zEmW_ciho}1mk>P;|15k|n}?iT$y$8Db4cJLgEZMSjIkK6-WjP{4>MzkeVAkH&dr54 zdVi!-Kumder3t;X+t#o@S=b0=Aw11jd~$#haEJLDrDk`I@MzC-?ZXy)5Xe9lb4YZ0(DNz2iD&e*5CL6PgTub{`VXj{vEctY zMVBq%!+#~#&_}?;C`E*`_KpSHIB-iJn!3z;W-Q6KbU`Sv+LTjO*@hL2LMmZ1VjElh zJ%oA~zH>E(m=Utr5RJ9=C}j-S==M7{r)n@!!OqQa*P&9u&ed>t5S%7lu}0F`{Zi;^ zt5c5~;2G*-1woa#Jf!^JIYEua~ZO34cT8)?E`!q~J+Rmki z(A*X34hW+`W@lDmrbC9u)9n(I%f%GQoM(D2WP2`O`v>>eZ88KvO(mp$|A@4GTPlrP z;FFIpr{5nWgIXi3-J3jGankyc z#hSWx7d?8Xea6uD(Kv!TTrU^&m2r#LuhlUca$b!qSo>Mvh-6f+R(v^{C15R~4^#qlJ%*MkIYDJh7J({xFsuz!xK54Qg8STWHO+{{Y@9 zj!o*Co4U6Z{;~%YerwXr1H4ZX&?&8&EaWEetV8W?h6&RbRTyM5&05h8_Q16B5B`3R zqsF6py8^a$EKmLlXF7;Z-P!zHLR)#QD+dC!ckR zoW0aw1D*O16n(2O$;-Bo=$%n*fi?yl^lMrqxes#OfnGA%w@(T1?Y97`6bDl%Mwk?! z-iLUl63Cf0t`Wv8<1;&4+m+?>XK?payv0iJ#7if8D__icydRtaHyZM5f?N+=U(2I{ zS_>ceW;|`w^bcGIn5gDQDV8$p@Cv?@N)=AggIDPdbWSS+Ddg?Tnr`Unj^agFD7r#j zULq|iZOean1A|c&PjlN4u z5^9KHJv!Es_v-6N>_8>bNg=#($@OZM$J67dk>Obw*-QT9#Dc(J7-x ze6Q(E{8+snKf>H(IDIcl*Y1?MQr*0!QBrFNK%%>1f1bj6>jIJsZtQ2KtqddPXT@10 zoNvjr_4F-^jy|sfv<}y~=CrwejayYHWDDp!?|zo4nVVd&(bY7RGGEY_e)>&%u*jsw zn${bqM8DDQqq7bfSd9wNt~U|Q00frOadCdAh?#cv<SPNT(yS zu@$(duf2~0{a$`WXzZV+BcUqIQA%TeecV3vu%_JtXuj`jZGA)u?^(87G?F_?2PJ=LvI!AWD#%t%W5TL8yi;tS>=(uvd$M9NDx`L!76-@6S6vd-Flu zdXN?Avb}xx7`QGCfM%T8;uY{wzv&!-T*|c-9qRBOv}23xx*O89$=8L|RcC%5_BQXo zwC46!>;q{_m#k{l1V>Xbt zH=0bz(}3OSbeNe_ciYou4cLd|qo*8db&~kY>ImM55KumoEdZy{cZFZB%1n$6`_xEU7 zj)RJk>9QY-c78i|=uJMnD<(cE`(1B8R)U78&a~M*GZEA{xp`$;MOijKkv$`?r1)4_M!J9NSTpp%Kb05f8QkVHZ~ z3m(rFHSzd*JRPlya;WQJN0~duy%g+(T81`)yaT4v29^sEtB%QFAwdg+yE{eNl0dt= z`OU*6hTgSHW1(ZGrqmG$kGiHPv!RXGFBm55dvhi($8@%GdIKP9Cg0TGxe>6j6N(=X zT&HxOWdz&`pl9qF3V%8O$s0O#BzsurBZhmH8NBM~nLV8d>|Szr6P|Ae*jx9o`pUO$ zgIQzGjHJINDo;AE*6k!#KI_6)_jNK>%|esg`@bEzwAyCJa8-+_tJ<2El6}Qo8MO5Y zFN`NCD&iA84K0~-*&^p=vL_WYC0kkp6wPb>mElb#}F^WuCF*V>FhAjHBez@>ofck)zF-KJ=_Fa^|n(>4rKy5VX)Ii5Wc zI?zA4VM=lng+DOxM!{BFjkU-xb%*kT#jYo-VG5FB^>*QRd#CN}MKH(d0twNz@_YIP z@w2Zj#B6%U16&vvf(FerWEy*03jJeH2Rn*evwA&-f~fF7N&$}RIIo|Q9RNZ1A zWf^q)ObZkGJ1vlg9Lha;LcOSokmr8_w%r6X$7y?JJC_VrYpQy!?RItvVeN~ix0i-6 z4_Kd7VlJE1c-+Q}od=*-MNqMWXBA~78`R_62G7ZUe7&8qbCt1s*@e4v%P*scvRad3 z5&#$z0b*w0lAp+tE{8Dr8s1v*;kB(tmajFnYW-@pRu^FFWZ5MMSabgL)cLaoD9XW0|CbeyOP4iW57EYhJ`KWl95L+)|V=BU5Q&O4Ur4nz! z?ac8g2OAKVGPS+fEaO-R;lhkE@Cp)FDPVOp(SV2hMdFn z=Q^5(8B~(C4nrDd8%f@Um7v9|gOo*AU+P${X7ZVu#cpi4qaas1^X}ebjB_v zbi8Fe-lc!oXXLlNsB%;9H4LP3AcWLE1hU(!EW}=-N;)i8l0k`dq z3ZqkbEkp@gQ`gP)0u2sVSw`o%f9{S&cgp!A^mJq*L7?r0P~Se4&QwJ=VO=$J#MYnF z`M1Ja-)gPFs4tf|LKG>`QKS$%O7drb)#jFOkFxC}Hm_8jjtTNVvXmqB zWtxpV9r2d<<6CedQQd@!7cxVAn*S3_sf-kLYn}$BtqFlI$b6cF+{HNuj}A%83dL8E zr`0RDZ}WaSKm%pB-JdGReG2WJuLi?DGVz5KGnaFMCW?Tixa0zxz*un3rFRF^%S8F= z>oP%4({9ht=q7#s^-x86S4u9;K|q4!go+X){u26V97Z^)3##slp9_&FP}X3qe~?Sc ziW;rqa|(|h;;8XeJhGL{!&=(X8Pr8jgI#UA20Tl zIEo>=EVmog8&AtTfG`)h8p+y5Qk4Y6Dpxo9b-cZs>m^%gOy@%rj=PapdvomU69;}n zv4L8hm7?2bL_F0*d3Y@-RHvmrqsSkD2jX@dl$D&4A8N>^2@2P=jAi+cjog)ZVsEMk zZ|jPDcXR%Foy9y2lL2?R$FhuyGSZT<~s&2og+^f>XGeS|$$w&mL#duOa4J(u`Ztyth>vrs9%~NMFWX{fP zcT?#xu$@ao24mww_xjdolB8ngFyChvre3z35W6V(EQ_Q={~A0xIQ@~}xa;A!rl;Vm zEn6Oc^o6tKX|@-Y=<711vEi@WIWru(lO@Tb47v)X_-%z(IP zcCKo=Ike36pLvL-PI;nCizPz(etDyQ(V=#THvYl>B^>+JMu7X_rV#}VLW5wheT79B zV=mi6g3&M|+DJ!HlJNYOKVwB?o#mbKcjRvH<~ZtEp%NZJI_B}gJ+9qTHmLeQJGad^ zB%!B+cbpxb-MlSh*}D|BmE+m*nw1^R{7_fLoFnBNs0HDa8*_@)gyItf*eo*4D{gCl zvz&@UvA(JzZKH$3eCZzM5 zS@F(v21QPZwKL9KHqpGG!x*BAt|UY9LpM7+(8cfHbZB!~zcD{GEQ<2Gv>q72Axvz)v07KWPWIcSi=yDlGDM70*tvWL zqPoNSjqsEv{%v29S#7eB23gMYUE<|5J>G+pA%T97nb-y#3aZ4Vqzs5vL!SWdk(Gq`jIR#s<2l}vt zjY!YxXP#HyyxwR&KeZ7(K4g6`CHpnK(LvU&wuQD6nS=>;kch4HOU4ip7@CEB zXMh+F;GKGL0cPGjN1B`Uo~d)%4Qy*Fc^x5gwsObZ@{yVD*a&pgk+(AhlE>qqk-y$$ zjh^Lx;H*CEaT+s8!Eg5vaXVNhrF7d&l8Mh>UVvk->E-KXcLj%AkT~qK8e~%fn(H$_ zSqSB+B~5F+CrY2$*0xVUY>Q=@#8bVy9>W){*6O{;(Q4>K8Xl!He(sQCasnc>$C)ohI=E1Gotw4PYBw*=YZ z)PT+N;k{joJ?RTBBn7`0I`e>4QkllkY-z@5dakFSj7?-m8MDylM&STV*-}`eag<9V zR3%pb@-QtyWh421Xmau7gsG@+`3k&9!PZp1dg5M?Xy=4SGv8p!X5;j0S>&s%=yRgL z;Vig|cEE<*)k_pZJ;FcvJ;hMh7l)Y1t;iGzWBa9`cwi-fj72cI_*8L{fYd?tJ zW`9g2nE_sjplX&;-XOm;l$jZ(lXK2V9r`mRy0z{!64JF=xZYIf$t0W<7VfchHjO{C zOTJQDD4qct^j?8g6*JA-jqvdcUpVa!dLAL{UCB-Ixa(l`m9zfdIVxu@6p z;FwvEYX!Kqn68Z93)qE4{{f903;8m6_t{Qwv$IcHXSz{sZC@w4uA_$CUXgsq!B6}oR;;KF!v>gY z?6PVm@?V8YBR}-_vB+F?0iu4o+Aq=WsO<2=dg5SfUgJX{)#K%XrzB!a`+HP_tcn{5rR$4n8(5N%@PCHIM z;|`SXCojr|dO$?+6lGP@X5WIjZXy#fim++B-|F zo`VM^Ex_9#%?ebHfVj2o%*GJQSgZDRJw(TCYdWkb3uKt+*@`$(yV2$7F(sjny5X=; zTkoXYX&*6~6~NS10^8xjDz?`A>%F`)|(>+146I3w3b3yyZ39InG;?GU0C zFqKu2uRhZU>o$8~KDe(Ae}Qh-HN1Lg>$@UWHmTZdw2vpKu)98_@(m_hlkM97c6N#m z&bgF(T&ycR{d-Q%$v{IBPPO&pF1_MZsbd57&q1n$D&yuu?7~~iTvFec z`z?)*_ycsUnoE5GQ$%_sS#9>i^Pxj^SyyTgC1pjrdg`Qm?}pe{D)hKcg^OaI;M@5j zU=6niDWuYh%*E8wI_j|s2!`Sv_ufmmy+VA|L=wLq&TC?{puAzHaA0HS*tcxOIDOnS zjl>6^EFF#AGPW-_5c&otjTtqN`uGkmSshRwJ}ig+WAYllmtjDtNwGcSB^Llt zbG9HU%L^yI*9t9UM9@zU9Dq_i)Up ztv)|Oq*+V(#qSYk*c%{!aBlcReLuf_<^1=YCGI!<9E0a8WZaHH(8|79aY440Jx;iK z_d&yRNLr`CuQ!8Z!Ipiiur6*@OkS~zmp97_wD$;*RJ}SEW_RkX*5Mn%?fCs1S%J|( zm-Eeuyf)&xtAhJE#HHT8B$T7*;%`Iq{>t9)&etdC^#rp$Q~YBe50DDdG+Q$cb2{H^ za>&~BnKDHMnb2F2-0dEJZUJXk-kEH>@bE9yI;v^jbWK<5&DTbxGBP{P1UUxtkE(r9 zt4{h32mTJ?wW@eum`#yK7v|igOTWth2HAD&;b;j*==gp}ln8eP%#~Qc3uG+{o`r2L z{plEr&#b*W`|&syMii8Kn|p+9zZV)N4b63E-n0G-4;*t`XlbIxePy!FJ8br07S|Q0 z*+idv@9mTZicPZTV2}^@4|+E~Xp{RoDZDgRVZSon7?6mg-fnwTj4|aG_HB1Z7ceHH z4~n1qCk>4E=v`gx#kcC;Qz$v#=^sz|Ln~eOFD&?ffsmiivvWqoecv4VR|e6K7mWD{ zzx|Cm{-^N&@dsn7{9@>&CSZO*za~3>*D)+bvaIb}mdbaC`ph?oI(@4e_8+pcNsyx# z8HSus)gJoz@Q8JYz53sieY?j2&W^t6{SBu2SLY`mq@npVP{9}&hOK2!qSPf#SAA<~u;|4~R#xcJi?|^WYZvW2A-VU3 ztIQiyS!P}3xV$-R;cJ5v|3QZsFHTOs(F^52@|_3Xyk}5x@Pd%J1XcI`XUicY!#;_&kKyRQxKZCsfT_& z@fZmsJ97HagpNb2If@a0~E@qAYr5IXhF^c#Zo zM>pjTY|id>;?VxFGd5OIvR3hxuOsQ(;FZrOVJJYpplPtwD#^87G^|wjJB(e|Y@!0az?_18! z;jxMVAg13f70@<%fEsVk2d|FLF$Z2;N}8%yv^*3HY}vft7R&~U|A&CD9NB5sEsY{S zRt!0MVKK)g5g$d#!yQv8PL8}e(`OkFTI&kD`1=+c^U|~4j{D_Uu%gvO26AfHMzGW#r@;i!#b(9}X7K)|xHp-aQ17HvEJX3*Z)AAD4I z_0|*wVP+4hyBR0ZDC8&J{r@ccF-%TW{KciE-cm*>9^KMeuZ@`5crpsD5nG~OSTH6Z zDV?)c7qR;tmg596fM=GQ2JCQ#hAvzjxC#6*i`Ls&Qnk6FusDa8Lcp45u>-I)UDLax zZzeR{;64VPMyI(TJ4^E+q*j1!Q~@V82X-!wM^*yYm%(BWo(5SsrT|NhphLj30g%MN znj85<1dfy{tnL(+ygv%b)gXUZ1psqv z;|?=lEWrVE#8ja?EDkSO0NmNbT$noxTSzE$Xsh0V7jTHcc;Ue47{mVPmI)UB1_4vJ z*ADRBN+y7pu(%Ui}(}@QbH7Mo@UeCl5gvtpW(wzEO9O%mEd`D^BW%P&ws&qRbU@jDg#jI|o zwjHi9%drGs572%U@O~q-$Pi=YDeT_ihwMLSv`7H$_o#rGrPx?}?yHTz#>N$J2en!3 zhdJ9J;K9E4um69A7a%VXu>5Z_Z{dqKu=dcmvv4FO#lzwZ!7=+ literal 0 HcmV?d00001 diff --git a/images/flamegraph_before.png b/images/flamegraph_before.png new file mode 100644 index 0000000000000000000000000000000000000000..a0d72b70c8c1765bf8ecafa3bc557f96e41c601b GIT binary patch literal 57597 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 Q2=GTrOkT81_`U!C19i&z00000 literal 0 HcmV?d00001