From 6ef11b36d57eea0348c056865e634816bce94c5c Mon Sep 17 00:00:00 2001 From: Krzysztof kuhy Rudnicki Date: Mon, 26 Jan 2026 14:16:27 +0100 Subject: [PATCH] feat: narzedzia profilowania chapter --- latex/bibliografia.bib | 107 +++++++++++++++++++++++++++ latex/main.pdf | Bin 1610566 -> 1626203 bytes latex/main.tex | 2 +- latex/tex/narzedzia-profilowania.tex | 94 +++++++---------------- 4 files changed, 135 insertions(+), 68 deletions(-) diff --git a/latex/bibliografia.bib b/latex/bibliografia.bib index d73eae0..d66bdfa 100644 --- a/latex/bibliografia.bib +++ b/latex/bibliografia.bib @@ -449,6 +449,113 @@ year = {2024} } +@misc{unity_profiler_cpu, + author = {{Unity Technologies}}, + title = {CPU Usage Profiler module reference}, + howpublished = {Dostęp zdalny: \url{https://docs.unity3d.com/Manual/ProfilerCPU.html}}, + year = {2024} +} + +@misc{unity_profiler_gpu, + author = {{Unity Technologies}}, + title = {GPU Usage Profiler module}, + howpublished = {Dostęp zdalny: \url{https://docs.unity3d.com/Manual/ProfilerGPU.html}}, + year = {2024} +} + +@misc{unity_profiler_memory, + author = {{Unity Technologies}}, + title = {Memory Profiler module reference}, + howpublished = {Dostęp zdalny: \url{https://docs.unity3d.com/Manual/ProfilerMemory.html}}, + year = {2024} +} + +@misc{unity_profiler_audio, + author = {{Unity Technologies}}, + title = {Audio Profiler module reference}, + howpublished = {Dostęp zdalny: \url{https://docs.unity3d.com/Manual/ProfilerAudio.html}}, + year = {2024} +} + +@misc{unity_profiler_physics, + author = {{Unity Technologies}}, + title = {Physics Profiler module}, + howpublished = {Dostęp zdalny: \url{https://docs.unity3d.com/Manual/ProfilerPhysics.html}}, + year = {2024} +} + +@misc{unity_frame_debugger, + author = {{Unity Technologies}}, + title = {Introduction to the Frame Debugger}, + howpublished = {Dostęp zdalny: \url{https://docs.unity3d.com/Manual/FrameDebugger.html}}, + year = {2024} +} + +% Unreal Insights Modules +@misc{unreal_insights, + author = {{Epic Games}}, + title = {Unreal Insights in Unreal Engine}, + howpublished = {Dostęp zdalny: \url{https://dev.epicgames.com/documentation/en-us/unreal-engine/unreal-insights-in-unreal-engine}}, + year = {2024} +} + +@misc{unreal_timing_insights, + author = {{Epic Games}}, + title = {Timing Insights in Unreal Engine 5}, + howpublished = {Dostęp zdalny: \url{https://dev.epicgames.com/documentation/en-us/unreal-engine/timing-insights-in-unreal-engine-5}}, + year = {2024} +} + +@misc{unreal_memory_insights, + author = {{Epic Games}}, + title = {Memory Insights in Unreal Engine}, + howpublished = {Dostęp zdalny: \url{https://dev.epicgames.com/documentation/en-us/unreal-engine/memory-insights-in-unreal-engine}}, + year = {2024} +} + +@misc{unreal_animation_insights, + author = {{Epic Games}}, + title = {Animation Insights in Unreal Engine}, + howpublished = {Dostęp zdalny: \url{https://dev.epicgames.com/documentation/en-us/unreal-engine/animation-insights-in-unreal-engine}}, + year = {2024} +} + +@misc{unreal_network_insights, + author = {{Epic Games}}, + title = {Networking Insights in Unreal Engine}, + howpublished = {Dostęp zdalny: \url{https://dev.epicgames.com/documentation/en-us/unreal-engine/networking-insights-in-unreal-engine}}, + year = {2024} +} + +@misc{unreal_stat_commands, + author = {{Epic Games}}, + title = {Stat Commands in Unreal Engine}, + howpublished = {Dostęp zdalny: \url{https://dev.epicgames.com/documentation/en-us/unreal-engine/stat-commands-in-unreal-engine}}, + year = {2024} +} + +% NVIDIA Nsight Graphics +@misc{nsight_graphics_features, + author = {{NVIDIA Corporation}}, + title = {Nsight Graphics Features}, + howpublished = {Dostęp zdalny: \url{https://developer.nvidia.com/nsight-graphics-features}}, + year = {2024} +} + +@misc{nsight_graphics_userguide, + author = {{NVIDIA Corporation}}, + title = {NVIDIA Nsight Graphics User Guide}, + howpublished = {Dostęp zdalny: \url{https://docs.nvidia.com/nsight-graphics/UserGuide/index.html}}, + year = {2024} +} + +@misc{nsight_gpu_trace, + author = {{NVIDIA Corporation}}, + title = {GPU Trace Profiler Overview}, + howpublished = {Dostęp zdalny: \url{https://docs.nvidia.com/nsight-graphics/UserGuide/gpu-trace-overview.html}}, + year = {2024} +} + @misc{unity_hub, author = {Unity Technologies}, title = {Unity Hub}, diff --git a/latex/main.pdf b/latex/main.pdf index af4bf16606defb8fa144ff696b992a50c7547d41..041a88c7bfdf21d65417f6c13acdec2896e65394 100644 GIT binary patch delta 46948 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 delta 31409 zcmY(qV{{9ea= z<8<||>eYO+p;FVpM$i^1P>wWGS8OVPotsxk2+q~b#lpk^&THj7Q!&1Q3uXB79m6l^ zPXKC8o?>;an-+{sq9 zuWq52p8#Qov6V^PuU9OJxH-1!JH|N60oC02ITT)274RykzbNN(yj6w1418Be*%nzm ztKVE9&B}Ri!Acbg?w=`boOXcX8JMHr(ABuQmw41S?1(4=@`NcsWt9UOaW2Cq6w?oN z>~u(}L~G*(4XuPTZkWSSJ5B`me%EU)=cL-Z<1yYY$w;Bt;F=Cj0sh?A=E7wj0ZI?g zxpPF#E_ODL=cw(8KqGSzA$3#3-y)HYvlVe?nB{+a?M9OFC8V`z2HJr(%#A__^f4v; zXP)RzYrlq6*}FXaiLHVO8YC&FKQkJ#5~~vKUN`;~NbH=;^Ns@e)duDrrc=jy=0h3M zqoiPxNVFRgSQ((d#HfcVre~*jMf?uskI8Uv|L%$ zLpj3%L%eilqph9mQtStE=KxlBfIMu?6KtFn_m7U95oz3dQK3|YCTk5C=5fZ>zg2&- zEz)8e8~La(45i}fM85az; z-MVXKu0#Gpx;(&A3J z>cWU--~OVSG5mX!i*OS`h<1WLm#$G!m8*-wpRP0dM||ge;`bUfh)xDcp2=oI<2s)k zX}dyTORTkNARwSPR4KG6$nzmPU}m=oCep!G^oi7EFPwdF7A`S-MVc3E(-FKXy{25o z*F7K$XxQrfQW!wLD}4M}?N1at^?cWc0;T@!(vb5-+5?|a&f{KJYo>OSK}i`Z1P0W) zWNrPChYG>5Kwh<@T7}J9GTo(ajw=E>6!avSKpyvY&Kg=k=4{>f|cKiF4TinkEyb&Ms|ah z>pd`-u~3}@BmRL@8)FQoJF-T(;@D0mL49FagA+SIB-6$jYojWg&AYrWG_9!x1iJ^- zk4YJ{co`6j&@t$NdjY_cvUTHNouqx&!%2D7oWB_epzaJ(|SD&I6nS9mb?|3i#f1W5-6&c?y^ze$W<$RgOU&{ZEH zsaiJ1AUR+_Inxq_zTEQ8LqfrVak96Fu0dWxr)79zBc$<%LgKe*?Lkt*ejUZS_qC+t z9I_G?jO+ifc|JlW!hVJN#YWx20t&V8pTU363LQKY@qgkrq5X=_83T$N7L1$Ye<4f} zLWRSCasQwAe5s%kVA6!EAteBAE|&l26{j!nMA3rUb*Od6I$9u!HA)7H6a5sVhy|0- z^FZ3u$6{HcWAl5ikp=I3=;Qvm%T}<=_uOlp;58v+K~PYz%JkZ-Q``Jp|4>{@o%+v@ znxq-nPc`gpk3xgwzp@u_Ur7%Tbr@QPjPj8vvz#$!*sj69mUm2|VgKq@Plb zvTS>P&T>rN{uDNLn+l)NwTno*lDPDW*Nh}Gkss)~lIcLogt`7`__zT?C1k9GvzA61 z3>uOfxemzq7CQt>3W2svy*v>^@(g8N^6a9-oHd3~SjCYxn9ZGVedUpdm^vsjx@@px z1qo!pA`q1Pq$DU41pBiFSBnD@)D2Ee43<_V@YhaRa*k#KNd1{e;TGId6uki!2O_CC zS8N)o_C2N+*Rg9FrlJ@QuV*HQdxm0&a-<6U69bZB$aJt40TGsH64G)Y73sI1Q6z>} z=qM*qg|smY5-ISZDk2p-`@vcQd%A>~f%=uw=sw@NUK9_gEo?eRqJ;Feh<zSWT6+V;a>B)BYq)0 zZhpCF1w)4t1&?nM6yDRD*lshvLY}#vKb$}aHiTrU1fFU6!09$g4A_n^Lk?w!56AeY z4*`3P&}mqWZR*;NUHo82-xx3e%y)|qXvD1)&wS8< zn>cl7<6YpbWQ>0X#PONf0j$*z3a^Jrk0!e@j4=>O0@EJNY$s7(fs~lM?qpc_A#)c6 zT_pNqSBbV@z=@s3{3brk-|V#BG`q9&6kz$Ct0p(_>#)pR0Q^Eova5OtZNJQ(Rvit5 ze`QZb^`qRB$O}w_(D;})iZ1!PbPoj*)V;Iu^*9Ra)va^*|a%hOYi{bA92QOY!HDXm7&F>IwKH4U24uTC}2LK zThdoDhzVbE0`WwpQ43BNrLc-`yFr96p^B$S-7D=cA7`bi!UN+m4G&sjCsu)JRWY~? zJO|y8$iq(cy@>nhCUi`^*W9)}rZIs7SiDN9Jvt9M3BH4vEt!3%=0<_w$3C zvpWcyA1K{k*OP#Y@Oh`D*JbL@x0C(RmebEOWkZANsb!b8zwx+>|9N$^ zGKtyf^}7G?=^r;WK-fhHD0RK;A`W!oHg|ra(*Uu^welx~jRf}EwF?F(zAJSJzSS1A z6)jFgFv6sWz6)B$6#VD(sG4HPgK{COT3UK2X|Ug`Yml?mdhfrT{~I(kP0Ed+y+$Y( z&+0$BL&}tpzfd2AM+2lj%g<&FURX0-knizK&yKNd!;d7hSV`0YD6&1}OSWM{aNOXx zCPHYFG0+0!32;ck#tO6-rX~=PY_J~DHx5u#aOB-zp#d?Bk!7&g5=ZJz(P-|*P=(AU zCK}`s6;u|RRxhtax2TTteYZPq&qCudHKH>!zTs^C!H^2NK_6?uci-lF4EhMfwNrdn z){~2o%MoYxy*Dp`z+8ynh~)^7Dyyo{KsY%e&Rt`^f7?M1F=&PTGyT#btMD=dmIMma zz6>}JP({H`yfkskGhm?V?!-U*B)ptUSy2#b)RBqXRUZ!*{3+hH$)Mt=ujI(6MSgy* zB1PeaN5O;W>F#@v%Z6Iy-Zh2-ONWY-Xv;6LI-xMd+w%ZIP|6UTu_z8Ki>EtWu&f<| zddml4vq6-z8QFrgTOhB?2SrELv8C9I$w=AYvq4yy?Z5XG48p?7G#2AC2(s&Dns~q6 z_#?4nQA22J4P=t9rMH5^$)WG4XQ6{skAdJ8#ad^1)HY_En=I`?L>$7ffM?S|_4Qgk zX;0#$SKtG*cMc>lv4UX!ETM-@T)V~!^+A|szO>M1U6=YUyBfrWb^(y`qW2}VI-+rAP}XH=_i zoyd_U-*Lo6O==Q5VCIU{roE%1oQPkUYuEIr|zr!SB^&;%&s2*{>qt+{Y%kU_d%e)E+BwHYU-dR6;)e(mB( z{MRBB`y-odAkAux{U$~J92o!k~n=YtHAebO|vtPogX%ei(M|fZ5L>B7Awv# zA%td!>0#I!`&}}mZHe{^apgNp2ngLupK9P3^A)OqyBIoz0)mlww!+=))9-+Y@4uT* z-m|yO=zgPwAm|7RVV{J05GbIch-P5oiY}aiDj*GsW`1Xp6d7QE(WKC1a6m_Q4{j6@ z$s_?`XHH3MZh>Px3DxXWc7*`~nJ4jBMmOFbkIK=%yh@7nFc?pMyXuM$8&&-uYfme2 zWG{)cNJdSGl65eMpah8ejock+fT;t<4)@U)%`z@TD9CiQ218vKYesdmlB6y|y+*d$uHaftie|8h5mx&8AP6!1{{uiunzl7yPVCC~jn zuL31&vQHNp0QAFuwjL$$UPaDfrsB~;>7xgrcrnEluaj~3kB4XSv*`g6&U}qv^xP4G{BnnJ|A%-GrmsB@n5u`ffSyCFZl|mA>z1}llFsJ(7x+4xvR-O zryIUIG*m2=*%-bFRm;Urox>nDRD3-_0AZAk2I7LlOM<54+9rhh{DQ!#e2#=(FtesH z9Fu9~$26lPdp+L!(fqg7MNmSmuS=wU0u%O=^@-FZe4SEr+p5LPq;v_@bxc1S0hPBY zc;164E-m8(dr(0pgA!DwOQUL!V=2tF-RBR($eZn=DJvx>-J9J|`goC%)e@uz&{16? zQ$jax4CN^0Nba6vfMafB6=ybzDqp?m`s4T4hE#foyc8y>mG1EaArKYYl^v>d#_Auf z>v(7Yjix&uehSgat?s5T6w7%f{=Bb{)P>$@bfdUvrVC1xVk^pE>Yh$89V6Vid(9hW zQXqW4D(ajxy^x{?{(V66+oC8YVEnK?4H_6k`)NrqA|0iiR4zn?JG7&|855GRB8{~r znJNxTpdhT7&ovM3dXk6vYi$c7P|{H=nhSqrn`BZmUsq9K%HO4zPDLGNl4m9Z?i-CT z(?dN0omZtuH6zxmTMf*=dNL@jUbhjmdmC$2kP6~*Aq&_xl8UWVv8h2wKz>Gg3-(5?JHA-WbN#ygVEV@&Kq;;EVSP8T>w`-Q!tJl16Trq6rkae{5I8?ga)^uf6*MyV zKL7hIlQ1QT^$l~*e)d3(yiqR?xt)06*`=#ZS6DXLIg6x_`|B3`gGf}5m2(n##8hUH z@u#z+L)W22Buc__>$M7B32snXwj5#>D%@*m}(+GmIs=gBBNS0* z@4#i&x?6bU`}>o3pnY3V@;jftK}b%P$?HHOgrwy>2wM}m$x)w}#;{OH7;dZX=2}(w zY6GHotKsDa68}-i{NWb7fOEd(>XFFRzi{a3Ng;T<;Ki)<6Wgac-gnd@bm`fuhpb2C zJG5kz9d8&=QLpA;fDL>5KDFZx=lrpKaniDzS1-@7iX@*0;MQK-9Aj5=G4e` z;7?1rE7y;K_)5>M;;DWk6cd{?lASqc;}mM>52>J6RKU_~tcaZ{Q3+tWb7 z7-vPv;)+_x_;W=E)?}O2A3#c$*L9laUcH|ruOZL}s*TGW?+XQj!};L`n`d72VNZ&%D-kGTqtReC~QAVW93h#999v=Lrz)KBlpQ%=@(J>&$3qQ zo0}jxwq(5{ZvuZiR`qMAxhkorgd64Inmd^&`Q_sTAZQcaN8Maqop_#LcJY9|x}u+jrm7b$(=>YxCtU#x%`_(YmFlqh#fO?3^XQMz>!QeDs-Z zf|cezHvdc#x9uIcA4KNPqGp)cW#+5dr)=q}lziGEo%>{=ndbnB$EeA2My&=Rz zL|0i|iG=Hb8yOp9Aq>Njj$CC&M6%>%A+*-?DMql)7F9RbkWq4h9z35Ph@i}f3B6of zBjyG`bB4D1cs5F*Yk0N)L+;;ipX}u*87HR{a289WURwB>bnXN2Wmh9V(db)Fc+5xv zO-Z-G4oACe(y-S&LqXmdJxS2U8Nm+HQjrr)+%zb(ilN^-@i!cqmfNNM#KKlt{lX;e z^D4k>QJ}IT{%G;*C>us|C`0deqaHThsfnDTTRmG)K|)riA<||n zfyIWN=Xmh&I}`*@fKy)cnd(uN?46eb8j{ike$T#_G7U)YF-8L3V2A$enEhf}ck`z; z0l7aI83sRON$|XyHGTF1d*Q(5!U^;@46BLN!5K*RRnw3WdhB2|VU}Zp4wq!Lr8DjA zNaK@BnxX_e)3fB}REK)lL3=v|wHhJ(WRkE}-7!p01R1^uPjrDb12iL^v?%mAmCj za~y+1I6`mneiHtC5WW<5Ndv9LK?i5&_@4p^aB=ed-$LG`p1c!(D`NMf`V+haeWDMT zC=#Rx{9UuPqaW#U?umD0Oh`;q zP}}|c5BQx=`2HX3U7s%j&&SyAs&Wu!TQ>pS9W(_hMu8hLzTTg2hn2|y-Hdc+r?%ZO zHV*B5tkCsqZXV*yV@lU9Kckap%%;<)&*$s@;o}!MYVhDVK<~aE>h^N8Dp`ab*xdCr zy-%EGlxKA#DZ4F-$#f0XguJ3aSpJZ@Jr|<6|=nrf(yUXv$r9pDX;Vs&6 z4<+F^$^QC2EBtPnj%0%Zm1v%50iq#mj^(nGf1OU#F~B;D_vbD@>V3%}M6ZgzhBzs+ z3DM;d?~MamO2mOaYpHh}2{ruN zz7gF=p@w8#Wrc0jd&*a`{+nd<9Lf8Aw$!!zZDCh5V7hKNjgfw6!BSR}s0Bp7WUg+E zx#A~nDc0Ue%3|@a=|lZ{xOH2c`g^k|up$f5zx7oEaW6oz!}Oj3RD%E$LLIxU`$b~F z{dm)QpZ(m0+$qcvWevJzm__MBqpsOseR6cPZ=~*2_9B=&&$OtWnAWZqR(^?{HCM|+ zO<|4P7AHh9SqUdKP*UR9z0HD7jE?_GPsAf1h)8~NBhILhlO?T+Qke=q&_zyRus(E5 zCeX@=Hu?a@a&>ZMlFpVp$$SWG~MD9UNm(k~uFZJsSLoQEPAVAKnA9k9^- z_)-)X5jFKuayah(;{BW75PvhcjOdxRcx)7j6k#dztjJIawxHUE5nU7tz0p)0>Q*uy z&ESeUny@{nJ7IN*Tuj`k(4;0JcK1ko$E^_e+He7~F~MU_2Dyr>FU9d&DRrWVsojNr zYd$W+s`yCu^n?pLFeR}Q^KQ5TiTF;^yhaNCEYU+vl`#TDOunM3-gn^O|aZ>Mbi6wYjqQS z=?SZq+|c&V>4*oUllG3aCGivlCDkRXH5^-g;!F93ja0w@9tC-Kr~Q6uhJAvIsvD?d ze2t=l&9=eZJCxZatU(hB2fav#1<~GqgKKsgwl~gao7aoIRDk1p9uPt@jTQV+9yn#V;WL`qwZoaoT`K(M(Ai@HNF3=&=RE-2j8RL-gmP2J8$1+9zb@XJKF>x2B(s2v9*rBf zeZiG;IHL-UF{o#D)L3hum2dD<=sB#RG`@|X#(Ap)a|bhvg3ff(*n_t4sduu0E3BYX zz`r6*)%1mMA3TOwb%B3QZ<8ld)AWPOFf*;k=SzDjlu!g(PR z4#E+3jrSYRtopA|L|)?Mpd}A7N5869;Mr7{NYFJ986(P2k;iZ}Rv)kOXKej_1!&w> z1R~`rSs=68j(*hMBKcL@oL>P8*FR6c7f+x_6*y(DH^xk!*-l9*ur7X^gJsxt*Fsc$ zxt4g4t_OLsPR2kOC>mAY?t?JtB;4*J2!&U&_)QAq#ip-UaMRZHO9MbhfasMW(7ihXp>y&Vb=6xDG}LzABM z{HUA_t7J+Oj#1gE7*)QH^HlI$?nMQ% zo*03&-jf0aAnUUjdPZhIL7@~3-W~==Cmm`J@t=l19Fx0ji4&wIKd4AB?07})vp^whDzR(Mb^B-BH zVbJ^(HeF34NKL|}gIBCZzYS?783#`~f2!vm$8hMWo1+tZyyaH{0d<;=Ikm`+2hjfa zf)|Oz=7JfYrtJ2VtsTp|omuBA{qH`<6jzKcP)c-#+g}>}-U8-fDHmqot~~ zV~f||DlPhgOFdx$OKV>&pw;axjDT43{cBP*ZOphI&JgEt{Gkd6f!55 z!{YX>W$&$PSN`XReQ!oKK$Xvmrh8LmRJC1-`m2PChP5c+sLi#vC2XqgV{)3%v65D6 zZ2BrFKIi0d>FmgJUF{njVeQk+Jtwy&dTD%I8M}W*0ZcG}ajl<4^=Un6JqOL4?@ZPZ zqQIyuJc2;V5*_DZ$KrOZ*Zw!)a;kQHB7hMF;f+M?@}HCAd+PhoGyRUg!{*$~&0_S; zrt}s!W$yKuuSx#2VVX}?rCN}Ly`Eb9`@GQU66!LwGHQFry}7 zboelpgnA_axve(*a?U7^@vh@c`jYZj`ljbeZe#{VUZQDoA^bB#D$FUqy2ib`#z$Z1 z)cn&R3qC4EM|lnJVRBEnxwu3!sCwX^WUv@2A)lu-eXiW)^&J5=+DEY*Q)D2PNXaYq7D;wl?*~E z9&eXUo9pbq7kI_uVNh9?mX1V8`r7WB=iW4KoAE3TLJT`<*%?`^gDVQL`3g;K zca|KSW`8@`DJkAYo4P$Ji!8MtYbHK0%OtL_hTAf1Ykv3wA`ie?g;6 z6pAX zX#JQZ?7q6UdVfFme!hlh0O>>DzIkh=2@xwWN@y?E$?bmsprG{X+5-I8hOPh^wG(=y z?MKEY*yqQ-?gHiU(=52|L*ZP&ARxf-Lnri6it&>vKlEDwD1Gtb_+~T}hVD{acj{(p zEwXjSV73TcL_*WI+NzRm`YOipl~=Jw>|$#S7v2#6G32LAVkQ_jzkh4B)6|j}QW;UyQj1~90*eAJCdL~U)oDE1!^2HrBNa0L&rd{|GgiY`c*cUek z+GQ@Mz0^PWEJo?>x;W-2UZkR%xa~kjN6HF6VPjbGZ`37L_2-=eWgGjKevT5Y58*I2 z8cm{NEUZL?Me{1MowuZs{9Y?@(y5z*7gGc2Qmo%vp+xPdGX$8a8^!1ih_)%63KT1n zc=JRci+(FOw$Ai9$V-DS2GBGdxe#lgXV1`G&8D66b#_$XA2`&jk;JaDL1P>Jfv;}Q zh0ujfuotX`6jo?(q7y@L4-Xn`W<92xCaNkY5yGeZjO`9`H~%m?^f+pfd~kyj$agA5 zCJ!?KN4zVDp9Q3;DRfo#4NMyIP(9d`L4qE?Gsf+WR4%9X(QyB5HI5 zTs6Lp)Z8hu+)6rkltkvRKio)LDR>I+#NZ|1;zG|m=G4pa)0QIOg8UUFWHD%Kl1PXA zN5;;bzQQqCZqHnqv@QYTf3359hDK;uchv2tgP? z_sKMgVc$rMgg3%w%U0c3vGDQ?ZduQ#E;#(Lgpmw~Y51l(RGpQ-j^}aA7gozDb}E!y ze7FKn`BNyy5G7Sy#%W!L=K5+u3?~e_A&8}+jiU(@+z0y5hj{GWY=)^}&TpQI^Y=!j zUC3$;v?Wkz_9M_nBB9uTio?REHId0WnUj+OI?Q?!Zw;`E}S==#Z!%|V|$NvLq&}I8}?uetG+v#D_OY> zV)#m!VxOIqDF5dQNhPwoj^$uBqszCI`BS@5NDUXAnL*+#tjWJr>k)H&6I}goaSl?9RJ*m;G=^!k)bc}kzE2uQhx91>Z*M^)8Mw1=jv(;;- zeuBWtC>!^!aF4A$vuJNVL4v=pgv>#znwPxU)hoz6Y2Hb1MdI-pYw2l;pOg#ojFrqY zN=-D1Tv-nVpSi62t^)pfCV9`j#v@C513C@bT#u*XUdlGc$jNNnt-^<9S8h2P2YM!P z#|;f=#?SKsDS6@2>>5Q`_ZYijs1sI7CsyEGbaR10@+I8UC+K^*)ac3Y1f|DHlmv$g zcKf$FO-k@?(OygIhtFb77jRyvTmzM6*hHgKv`t=Gu_?i1&%8`bQfN8YEVe@a5zL(A zM0$*|B7ITE61aaNL!9nIYPbq>S!#2--VB~8deKaFPBS!xr zUgAYSq(Fzs6ibnbl{dlx15`tMc_~~eN57tv*mJ_-FEP0C8jl1u+fgQsPdvGD$o7T5 zF^I`?@wCZ>zmsz9$7$aGcJ{1KcUE)8M`f_Ahx|pHn^E853>77O&{g`|bIB@Xe26gz zxw)^-MR!~7mtTyn)Sig^#wvtU{KpmGyMX=})CQ}!vdh(+i|YwT7;m{xk>i+Dtl9EH zJvBF5taBW0s`|nFZ;hk69lwCmUCA+lsA>~$Eq(ob!O4K$mz^AMWRHXAg*He14UY3q z1RaY7bOP~6Plyh*Llsx$iv@2bqEiIplwIuVFBg~?f~&sDdeE4(5aY8F4&w!2$%18N z8nmd9pnRJOXFd}Vr?t$t+jZ1+Y>Y2&20ibYvvJ>>QuasY@HT^q8 zp=onVu}T7v3);b(rYCV)rGDY;ibAq9uSgL~c)MwcA>u~yymureuwBV=Q+YUk83#d* zd|rm?RBWoYnXpikugomK$aY9qh7?g0aEq&Q;m3o%K=6^=t2_mf0l_FEDbw)JZyClXhP;CUJEo%Yqm{RDTSB{o{}ls%r0P`<;WZM@z5 zr}tM}6p(fzElxirj)uPc)U;;gxgc=3>{CUxJNy3a9o1W>87u51i9Ke% z`{Rl@joJ9mS6YH*{(ri-|Np#%=YJi601FGp|DBiYYme99bN?qVIe@N;D*Od)?4_E| zIAZ{M8O(52@1&`-_sLyCAy?#0k=yGK0x=kNIZ}i@>gp!p^TgJZ|BMXf1a(;m_Z>(0 zHd^@k*5>~0obT-g8fhy9^mqTg15XfG;~UEuDdO^QM8lF-JI)qB9jm)a4KTD2r=jcS zZM4maXZk)7;|6qHTPcwDwK|p5+d%Gof82Xk+A~F`KQ4-I1~~2IUoz=5O*>t&e2+9fG3-Prdr&cq&mnn%x;Zz zTjvDPblP<&Z?o3bb~?L-?(cy8j#lX$>|cezyN+xE$sdNm#>p(q^cjkqU;mpXVujO9 zkhT9me_`%qF?`Vy>ImIGQu8aGuznZSK}(*nmNfj>2M-gjV8({eLQVJSehTFCFn(CI z)d7TTZX;}UQMk1hX31Dtzsv6Nh(hGD90Hwr-#N$P219;OMh{SqQ7MQe*9V7_%k4R? zv(`bzx{&Ds6a8*9Y)jR{YmksDhwZb5pz>>TXYbqRx)BA>UDeChpq$Zpv%K^Vo{ zu4E|aq7j8g&)R=|Xw&HyYv5Y3*RPZGJ)xZx!9*J77xxMt94+?a<9CpIK{TV1Dl$)e3tJa2AK$TE4 zy=GJf(0lkHTX+^HhSDYIKpyzJtt+PvHq#anAXh>bs&cGznLyIH-#8T)R)XHDyKB|J zBH0YMLX)^RZ7rOJ!Z_jYr%fm``sPM4l~a@KKjX?R$$5=zm}OZNXO3=WPR^wGE7LZO zX{7cIR-l_E+crq;3}QZ^m7rwc({^#uJ&kn&_uY!&T`g5iBF-6G5z0~I`^%3fzI)Tk z0yXYB<-^px3faq!MR;j>rN8@@b=&!~8U?a;m+jup+j9KpD=XfcXrT5o<2AQ^Bp<8aP*0TOw^}N?x`AitCBO!B z;J;-9P_{JDYDjW$UN(-jUL{a`fRl&o|M^~7G_Z-sm;U+Q)m$lTR0h?c$Dys^fm3 zD_I4*3K&pv<{FyI@d{{^HucV%r@{&t9HbA65pqcBODA+=d8`ezwQ>UL}C3;ILvFGeOwGX29C0Xa`nfS*w7QUH=NB3e1AD zyMixPNs{?R3#ug7aWq3>Sd}ya3g+}d=|H!zJ#Jv?77hjti5p-sVC zoL6W*0U8#_vI!=^jBv!E)Gmz$#iC?C2hlHtJr|^Ov-~5}31VE3j;e zyP=HWTN!w9b{A|L6JtvZRTEcBSzcpgt%3uFsyNGEn2p0BnuII6!3n)tJQL#H)){tc zcxS@}Qe)!dYihj8oCLVz>bVgf7_CLdD&eLh=mc_Vbtu?iN3i669O-#C7`Qqrx#5Z_ z`2yfT5#0zht_dGx-ge)2IaMMKC~47LbN$3|63RwcgRuSq8t4rIDN`BM+%S*i0)flk zkh?Mn3N@}fq(+f|;S?!c$u_m{nWVk3UgBi&T+0Q*0$!T_pTck_D&cA(AYrEp>|+hV zYRQKPt@KZL;oZ*q#XMDot;qf;MD#TA98x(zG`_8<{22R8dbs1C`Uwj>O$j)xnW!5A zeF(?+sr+HQ-?a_a;|cyb5rPOiFptiX#eo<= zsrdqVVxf%1NEeZ%$RUJ~Q$FGi_XVT9iHwV~!F73PKP# z?EsDCFToM&^pXun+UfpjgcXTDVey6Ce<3m)FvXb8>J{7|8U(MWGt~juJBxgL{`m zrIXG6CSqYC$U{(K42r2j+Cv(jz^APvs#Z)xHl9G{t4()^dyj1UFCv{tO{6>+AlOhx zG}dHMBN#%#kV%SCo8fwnQHcb{9TY64aTIZt>4jI65k16}gf9MN1V*k#p*K=gKRHJN zWnC8x<2_SWGApmTSI?18TOr+vL3=kO{ONt|(77=Wo&(Z<{TS_JQx`)U1(o_U59oSw z)MGYEebtJ-?E3Jy7Jt4CxZWuM{?K9qUjz~WIlR&|ezp&*zqKK`0}QG?Urn3n9yB@wIxCS^Exf@jB$ak^ zT*z8T6An122ew4Go@CM;E8OefXZk`vB-u<qce{#txy(AbH`?ZO2ICu!NtbYWZgf za)rMy+r8>!VV9OF7*%F{B0UBm6@fUt?G9fW&2&#+Jibm|2xCVBo`Y>`=TYq%-$y(n z@c)e5ICNDJV`UA#z9QfH`~Rs$zMX8Q;+(Er_XCWkh`&<&0QH&^&;9e+2o~~b8%rC3 zY1ZK~Oev*X`*Dt;l*4Fz_7Z}5maWF4_;f<}ta&`d9pg4Hn_tI&WYDpMb2u;QdP9+- zXqG)O-Q0f1OKuJU_MIN|3x^r(wk1>}?Di;zW-?apiZ$UABWu{iALmg(PE+CL5 zQVlEgYP_k7(=I>1o;Wo1{?gvNe{d9aiYD%NzP_A>**=ZD+H63Q2>0e)5@`)tVv(J+ znJno?Da-|z81#?x=F`;MtIa&kPW_9w3yamNjCj>-cyYr5^o^|={{=8k#p`wbG=%L> z+*>y;Z(iT~ZLLkc@F#ET1Ey?f;jQ|2E>Di?(g#qwpV|zGh(MSSd=U4##j?KtP4B77 zSCy_rA$8G}rT?{H`!OL}#5|iCauBK4cqV1kr+api-z~l+Nwdm$g$DcFtY0+y40X{_ z7@+*`a_qbY(Dn~HmTp}|?(LViMuvo+&VGoj>lhPEnt7&6ME0p=KTVPG| zUKq7!Lu3CH)}rrXDx5JOh5+Zm*z@#^T?FS{ZDuFA`BxGYWbiyS?lO{R#0fml#ttc2 zElPO+kULW@@}&9_s>3(2IN&NhiSke);6V@i?z^8yd$LCubtsnik~V`k&U;_q@i>gV zSv3}M{LGxc=k|-PX#_Xtt;f6iY3~X{l9F#koTTJ-LdrX`NX@Y1beb5c(!WUulX%Pl z`nYY4`E=E#UcjF9;SzgL(f==Vc$7pu9JQ%75D|vXo5pXIOR45n?6Jdxet0Fb|1OPx z)N-F?3wc!Z0pq*sH4}S`O1L?9_5;whk7{Q*J%kZwKwewKuau}K}+ z`=tff>$VvV!zF&E53UG@qohwAXwE$YEfcNm(pGF!WEhe0i~~^*SqGk#FHqW*n1+?^ z+M5&6_ve0kT{?pryBDY)HVhJ0s@{w`hXB`?LER3oz zw`|+N3;b`xxxisR+vqN$99RK$CuUvg`s|tz3Y|vHR%76s&fJm(?|T_3G9#N|WfY}`Tea$BhPt&YCMm0`kBy6XEHpp@&rcz$TN<;3;g zFE(l9J^u*{sWKFHE3ZhcS;m_sm45RuiY@cqT`7IlGa^n-L2tVcj)D2Esk!f1Nc_(c z8dYPK6poa4bQp#TOLN5S z)tBerxg%;FR~P0b%w*;I1&e+qhwpNuxWuwkZG-1Kzq9H7&e5D`Lj+;bOiFW|GR$gA zY+Rchf0rWlpSie8gQf_1NQ_PU3Q9thi@CO%?ybRCJ)o0mAI~xO07& zl!Rnf>KiI|5}+~g;(M=h?pZ7J+GaRqbP;_X@bE9%|2e@`=+y?e-o&_B<-o1wEhA%Z zD*}8h*k8i8?v&h=F9kId>F}gp27VRDOzWMG;QEU?`)GNkReK5+UHX?krH98~-m?B$ z#v0z~WQ_0k)guxva_Xmg;@E+iH6yo-YAQxWxMZ|}81|LN6Wt#!KE|hEdC_xk_odwR zzq+DC7d)=aep&#MtS#oFj{8%#Hs^v>yqs)Ak8u6DU46LOF^9)gg}AO0{kgCfS8ScV zoGN>F4RSVuqLk&xb^1%Dp)dyZ=47n1T8a~AxSV7|ppw&*r7FVX&u@cLCFBWU8Goem zpy{GHd?)GpW1rJQ{WqN}G(@rWhjQXZScb%@8vQ#GR4^LgKq<0ZSOPIZ_U{<8P)2C5 z_}Jim3ewv`J|L1_ZwEYZp-k&4&CIlz|6p*k+3VM)*0>P_Ivo2~!GrN(vE5}US$o5& za=mL~Awt6+C1#Z`=OItUz&^T5g-k-RS0gNZ0w05Ub9uET|CQ?3?~kIaqJ*sB9sgi7SH7`s#CDv`#Av+gDO4IVi1Cs}R@6 z?4kDRSQ03TM_pYYGAo(#S*KV#8dH;4PT>;L@QKG>9OiU+s7xxI0XO(tgWO`y+fLh} zeJ+S`y04;YrKetDb`)Xy>Oqa;y5DZ<4x`t>UZMlEjMUUP$zHpqAbi^>P%7xFGS%Hu ztlxBsHfXAK9N+g3Y8%z7Bm^N4?$)lJS<2Lo_ZfKBOul&PDfN164v?ndx8TdIYnT4O zzezrVS!pcy=aI`}wRy`dwRYs|ERC(yNt20P*jBPFei;1vRqZ(LT@AMlJozXb@pycf zakmseA;voCSC!I7yZrEI$4z3$xywU8{icD-2_fDtm>w1X|Mm5a!I?JQ*73x)ZQHhO zI}_WvC$??d$%GTzwr$%v^Ssab@tr!SzJI-UUtL#K_v&4{R_|Vo?6uu7OOYCA{JUPz zKnETY&+;Mr=K4IT@NP&j&+Ou5ZLn18dMG#dTh}g~tO z|2^=c{ovjpnChHBjn}9U!Et&7hdLGtCstlUlxI;?m%;2AqQ>qg-<`wFQOXuW{8_2Fi~nZqY~vgtSSc)hSfa6i%AQNO0fCZ zBT5my-K-1c}bEVTK6tsQOGpab>9Q)&IzTI0{$8OvsWFO(Vb&z~(pn={d! z7k05H&YcVlKBo1smykh|HquEErrAP)v|SY8=5X3X{;{oZ`$hrJrYAY+0kF?yNehuz z{%DJv$Pl7`Fk;ZG9Ovg&(cV01Er9MeMa|tOx?Tvn`n__Bb}778&#&qNIsBgf>snMG zv10t5GjCb1WB#dh%G|3oECyvuT`G+p4?FA5u$$G^wxw({ja(TDdosgxyojPACUMaO zzJoEFn3ZcroLhpEt*Dc?AApiks_>12f2nt&f^^A4oOoVh5-hJLY#F)=HV@YbRoQ)k z0qQcls0&R`52x&SgyRQfExO`{Q!#IDaWqF`F-Ij%p+lnc)M#~QJomd{xfP4A-~=@R zPqcxr`zo1b0^So*kz;~9uPawB8plsaA|b|$``QZ?DVaqV))R;_70_=3boet3F7G2C zM)d^e(w!|r68si|TN$_v#~ejbU;;w%mgbX^7`n@9ZYfIY2R1pLC1&q*OS!l5*;Gff z#!Q%h$SDfsL1nxTb*;o*e(LOgvOLwSNHK+=l8N02m^8Xy8XQ?Emu;;h3B%dw1L7-` zC`5F0*(kBMs0{on2|)Ueg@oZ`gf-Ggw355&yJ2%Gcd}oVdMxiFI zUPH(y<8!frZc*h4F=+X~;wzI81Mne|DsXDmlYVKtm{0tATLR!Hn5%L$$jJUjor z%C>CsmaG)ICO-pNo0*5SHU5??MA9j{xS5GvX#`7fh~r{800x&fk>*DtV&Yf$&F*0W zkfC8fS+?JmVA)qOu+a=|bRGp5U>$|aDCAp~}(#P&B`Quz= zT$N@Bi?Ygu0ti-zO3olwu1rZ^neoiVw7~PKO;i!>D=rBO!;p_fCXu;c=k1KAcp}LZPyJ0~KNr&B_=I$ZY*IaL z^|u-_>K;W|2rnmkPMF}{Cm@8q(*sPO>nQOoOD4qf2rw*%`c}J)!rEs_Zn5a|gYiDYg4S2rQ&vvJh!cx^w%RmZ)5X|j!pW2w$(LpY~s&nH0qaY$Iv)KX%aB7{uh_Kd2d zKIG6V0KmW-kqMOnGATd9YI%j^Az|DE1@j@*q1q44K9=g!3(YSSNGmKmLl_ws+gE83 z2s30+CyXGhaKp-yDK8Jv5@O3Oe7e2YY}K?XVHgakVnOH)wKJaIYLc@cX3q}S9L48Z z%(PrhGuQmdZMZk1^-w}$mcu@!r%iFH`heM{4+!TRqx*Uk_|BYNj(Paz-Qf~mf2-5} zWECIYppy^@pCXAu*K2V28kEChHsCHX!B4qL|A>afvXR;D@qP^vNk_%hT=Bb})a|kNjuQ@8m;wMK?Puw+-0G zt>G$eg3tIo96wM-=a29#L$g8y$HP9o9Va%wuV7JWGzR}LpNTH;v56Ble+i)Nc;2OY z0&43U)OWuh=6@IaaImocOQUnJv;0G&;{q6&{)d24a+*}iK09*AGe5Y(F9_ov2e{hy z^;-L#WuEPAgEHz!R3X7ru@Xvf<1Z7S%mosHt#P721g@XEBC$lFubdH>2A`Dr2$gP0 zTQOr)RDlY712DO6k`7Mtk-Zk783brbYn%r0$y^4Hj5MK5Qv}nXfaulNejwW!kD7hU z4|SGf;b!V>nvSVwp9O!s6RSA{f=f%Zt=ZU+&X|svPPXw`KGTy~@2nORRF@bZSktsc zlc3I}*aW6l>=<*uYD-$K2@xBr;KmcWLByCmWo?h;Flcfu6ns=3ua7z62uRi6I*_V| zH;VXiv&MZ%S!n|Q}{6HKzy=DwEMjvs9-2XVUoBpKRUuTB6fmNXq7Hp0eHMUXFdLi5D*@9eMZJ~ zNCFfC#yfMD;4JVaH6Fjf6c8tjaFcH4q;gb)xRjFDgqfv5rS#)A7<-|DSZ@vod#z*o z9bBVddKRrcB5GnVydbhzD>L?1vr59wpMN?7it|Ec2Cv~eD;NNEReDvE zSP)C&riC||4*Mk$d<4lUSdR-l>^>eeIb)%U%}hxL4G8?<2R=*`_2W#qaQ7E7{s}BH zz9DsR-*g`MvIt8;vTg@7RS=bCQL(7J!6zshD=V2U`usmnL(l;s}v(pCTG5J{r&a~_!>8qtfM0T_^uWB z{@At$KuUfQH)lyoSmz)%l%yuu$eB-&$$m&_^nJ){(1gbUZl4_+quV8YC*{);zmOF~ z0DmIw>2@Cy=nJf}4*onXNrT|Ycs)9D6U=|1YbG9aS2674dyM9cETz88*)J&}jE-f{ zBk^iUgnCJ}L)Cb6&y{E4bju_(Jk_2`?*As}=$v0oOn6!A^7gpL3PJ@T^0DrV6P2Y{jJQ)1lfF>dm`-! ztFt~`Cx0k=joKCP?i+18v|P+l=OGt8tFnF5_+6yE)U;WaEn{J7xv^9D3F61y3)u8~ z;Lw?;^P1M|kF;e8uQ{Fd+FtvaD||x7gira>OX*4ECeyj<%(rcn z7+mPaJss(+{{d)e32vo>EG_Rl8ZRT}77NE^S$|Uu>5O61K_b@!!o1yq@y!_zB&|eMi>| zukP}x(*0)mqh(LD2rvpLj>*5UVHWqlLJaVI-&*2bK9q^H}Mrn0ME0Z?5<`{ zlV`E5o^t~HBLwdanVZKy-Q7Ap#2T)(=WYFMJ96r#2txXrXg)PtS2#Z!;(U9q2JAON zCI~Rv?c1iCJ~}G(EVew6@ES^nx&7EXL)QZiVK@ost!ZT=(_gB67lG_`8hPHe{W@s) zmO?HY-SsR4?!FhM%_?f_0W8YeKO6EbmUbITFeV=0(o?qB&my%ec)U*ScN?t^7EF2k zCjKr^eb+d*xB6SbLwB=pLLG2yLQ%(`a11#!o1cN}16R!I2N|0`K51<>munrf)_+}| zIIhpKZLX~#Ldmak);8%kccxFMw%LfF=#A(l!)@L_;?1^p58fy<07i1&GY-7Uqt4l% z8kwx*o2pN*mLs3~7lONOod_^aS$q)M>~kWj4|$>|&obycDVB$A-z0oqPBL3)uievM z3tqmEEw3uo88A*myS}IF-@U(lkiK4GVyE(&yUMm-C|)#E$Hn~o-p}?@GtXpOJf`;* zOrB)`-Cd@c*zdOVfXTbhw*ted+~3Vj+eKY$UsmT{-eT`JPoBE_EbjUge)>xv*NMCS zUrVdUFI;cdt25S~>)6*XJM^ZRSI*u5{`t@9dj%PbiNof6iO1Nk5*nSvmPf-V_X%6) z<%rQbESsidQU#vVHm4RjC%f5nZ-icfT4U#HPtfOW*&6{=wErtdVEZRWAO-nbfb;K3 zJ1f`!P@r1WlZidxbn1H7xUs}>XeNGvfB>cKs6$|n8uWs1{^2}wHl+>Ac*0)d1^d3u zBMd7oR6Hy=~FisWR#he+qvtE**7tBIv3g2KwEp)}wDY5{7~qPjlks&Q&X^jXUu_r|xEGc_vmflrP+fDJ#6zw>r# z)`F3Lt`$)(%~Cgye^c~X*#If}K5BIK*@pNLjd&BKwc7^S=x`fZ35m}4*^rnI2E_ps z4k#KIPsuPI;0VDxi-I@*m-;&nZ^bM}f(2nBUQ3t#Ig@BfvI)4LAWsu7-C_cUlQLZk z9}1^Ox%_CQDEJgr@HDo%@o_d}_xLHgPd@ytxzBjBAG8JDC-Tg7q){|3iokZFAz;={ zftX6`E}3vEYYjV48&}r$D#o9Tk?Q7zRX?JN>p^gApjy&+ z%CL=qb#?05Bau%fzF-tKtDS?Z(MGCu zqb%ujnv{>Bl!~VhIy+JZNt5u7h15nIt$>UP;XT{rS~Q@jG5it7;?21r#ex}<`jp>_ z97(Pk_XSGW@RYmB684o=}D>f1ptvb5HO7whD z7EJ0dI=#;-AVeOeLO43VvmkAXA6|tewGfnZMF_|=t1hfZ+VDxfT(RhqRuCkuC_Gdr zZrr6{8OLlDf=FIzwo(n)Z;gME{|OYCQia=Q6<5nONAtuGc2S*hyd7XdAQnAAOyn%W z^DNdU9+~rAN>puT-r6?!a}2SXgfn~rd(;A12Q&0>0()8mlo2>xC%pE~-ez7Dt4R~G z{5L?;GtB09dKc)U6gFSI(Ny)oUU3c{VkSx(s>{e(!V5>ywQ0{n!^ByS3%9yFcD#1H zcfMmb1%F&!8JgyWY^@201Z}Z;j)e1uF(@=HF1Y~79y-8+=`~##JzPThR`f`U&aclo zQVlVEduwuc&^a=SN9=2pCHUUg28-f?|TqV?>MN?XZ!xluSXkGo5*ZnxLZrMe^H~Lb)!lvp#XTNI}}g5E~g7@#h#YFY}`D{ zcl#>7c?5z#b^T-I@sUMjNHHglQJs1mI>7Uu45ah+HpO_8r%S!C$7Rm zu#XFZHPDsW5*@1IX=0KRkf+270yD!AFbsDSe2IF4MrJ2Cx={a-ShrqHTMPO4EJjNl zlU_iXWPqTw&UA(}j`p5o3w+PX*!6>=j>qOX`0?Hq2?=NaLjjY;K&CQ3B-T5GY5q+? z;OpbgHGZ^P-vB+`=Vh3o8xiBH*A7R4X@go!z%WJ)`Mz>jv|IWK;27y95@{DrdeO?? zElspA9eam0C}@ZfL=bqxlc9_W(t~eu_FkJ!(;F6x+zUpB*$q#?w(2P8Ms3Ol9hR&b zFY*Yip)_?|khMrK!A}NLSwY~5JQyqO>FgR~f^K}gjg5WxE94BRLS?Gb2+s8!>}U{C zinZpfLf6?bT9AkuKrkAD_jvth3;Y^#X?D1O4{W(%dCvz|3!Jm3Ci(Q;! z9<($ZC5%xbfJAtqwOG;1Vboc+RFw&!<0n~-W19jt<94OY8k{sc6sNgdfO!~QAx>R2 z7XmWKwW>oG8vPU2a{}!KM9G$D6knYmEPHe*le1}Ch3M`+n2HoTG^jvxxU5-@yt#4h zk#_at!4Qa8PL^awP1E+9qLves2Vb&6qpkhQba8Wi$ zKM~~y5ZT(E+p>Q|Qf1`xv-6OHn?7JpR8J*1+N%OBlQ5EoFZvzIUeaZ{m2#zj>rRUT zKv+#a;9MNiNLInwq*SSO%sCfBe=|HJfA1&lrR@K36Klv?8uXt3J(C$!UB5k1yX`9(qxYCRPG=H#> zFf~pzz-upA?|L454Sb}cN$@6(tS35ZWNpXFuTd&|3^b*@Qc_)J~`|NuHT8JBk%mj9+hGJ#BLoJhVSH%$WPmTVo#`vg$6@(DkezuK57-Sd?rj+-(O6- zT2E!bYM5Bh=YdYSdulG}lkCd_Mhm8RVg>E1sx~JLa^YdlylK&@ERGE}fw?T|LaHmaxd`wra6NL=)O#8|Re@VAg>_=je&3 zVC$mlGU9sMt%eOPyTo+$=;jj#9P!zFeHG0zm_R zqS8E1vNQS7&*a1-%x_u?;33gik@rsBJN@nTW#+sA3iH;58dRxVIT_ivPg3lrOR`Uz^Sfp?zARol(2a1%c4%oh-+^$q`Zr$7X8Mpjv?+m3IIMtaE z!oq%YNS0YM%w?2?7Wdz}y)4_sZErLyX%s&biD`W$hhir+viyn)K*Bn`K~u#-E9tk# z93$u_rQ<3Maq^p(H(~iodE#>39uF-L^(ozSYf704H5yOyopy0wZ_H6*MO~6Xbw&MR zn~fTa8AB$IM?08Ldia%BahV#GrCP*r#R8ZA@7yo}WmiaVmbi9<>6!^nveAX|tY%P7 zPCMtHfq4KH!3`ivK-Jdz>n0pK#n2~ypdEv7qck-&hVyZ@G@PAQgC@w{?r(Cdrnz4D z5|*FE*}y$D+Q~tZXrvbVEjXD>Z#~aSU%uRN(sqjwf`N_uX8^??s#k8257dPuj}7w9 zkgy!T(9l8f7s_%}+m6>>-{5{JakgLVUAQHNo>%D0K`R%w0?bGB={uE6RUs8CXhWD|uW4JH0%i}1i zaeYFYNoDg_Joq_^4kKP-8e?jJ7HSLYoYnqdxr$S`Y%A?))QQRcUEoz+Mqyr=&4U%J zs24L@O-;+Y4WQbk1vZMCHKI0gFz_M3pL7D|246l3nfGvxsT3>H&aPa$b8*53nW3tO zPsls2fgFDIql0JHDdu5wtk1N~{bd=7=;&n_ebjz+ZD~GZ;dXICrh^BcyTINvYkbms z)P`cMninlh0R(9gCHyYK>&-dV5(<^#xp4{CBx9Lc1pt#3JK7>x{e#AwuQy#WA_h}U z-hW-yu!H@cs+i6J?OVqCRr-W_J#_GLA=Qu$%R^o`n>cF5%k!XD|C>Qp>>>8)l35 zU4#7cc6c&#S$fdIRvq-0NkgFN-W$VhRE5}eJ7_T#?mFlt`?q;{UDbNbP0A24I;qs9ogi380|?SgM}*^B>p-kwhR zGv^5{t$e=XOB9BS7gVvw6SM3dXv(|T-Cn3EEb5~`< ze#eo`jj`XZK!%NyjmUQKmCB)pj-XYR2|0o5FXyU9nVhd4SVS&7aoo@WC4`s9$-8Un zkO1@I+;&eReU)vxearbnkpsJ^4yMqLb?@09RJSJ5F0gL%_WM!}8Er!gyAi3*> zUUE*~W#Sh@3LIdUe#L)9)^59pGdrn!xdD2T+Wxl#F{cY7j@N1wTFDT1L*|=x-Hq?p z42YS}Qf%f$dQUgLR`r{adTreuMo07Q&rJn35&dqP-CrGl>^cbLMF!+k_1w1MO7zVX z-D4Sq4DhCW`4Yqfc7aK~auc?lo-D+d!($>5qPlXtbPSFi_*nA)Ud3gi9t?R)sRs

+2HjT5|;nyHkR|E5U4_ z@*7E7jij2_RyhhTk!_GopGZTNkOhSQO%tInaTvw0 zW@ko3^zCo@L$`guJ`T^vKip0ii@eb4GpUuOuK*=U$8uCv zQw7vNHsrW0?Z$S^ROBBrl!uuQN1~}hh2*#(evVObsZ3#}JB>{x-Mg0Hjx!w&Bv1_( z%W^fCO4~3MSD25%Tc}JSr8)KVCIy0(*gUYBt^cNa?~z;OupRT`QgMsTXaHYIx-2ZQ z`NeF8lH=cC8@G+ZkV~0s%my%1LG$%`g}uW%WEr*CLL?e_+X{iTwa_!O4nj7Lwsa}S zt`h|I2LS;GgN8&!oKuuUDF=bJqWsK%pg4jwjwOVEGL9!ChcZqi6o)cSCNzgKP9+S1 zGEOHffilh{9D*9;_D+$4b_y^XtU??Ah}p9LGo+{$x^AZ>ya0Q0ZC7^!R>h!#PFfiwmdx}y8J6v+~$O7bAo?Xjzt1&n@7*o8TO73g7t z=nlIVD}>8DAV+!2ngm!8=>?DAbU}=T-CvE-(h7orH;+dGkTQvL#rKS*Tph-0gMaG>kN|AIDgq*EdfFkW8 z94=4!k8_vw)1Q}t2t2j5TMW8SOBvBi`6shns;OnTxTZ5KAY7bs7Lp9xNDkiGO>@3K zgFu>9_`iMmq9jR{LCDc{qJ=r4nNtax1!=@g{58G_y}u3!AuGovM%9!Gv_t2k=PvfJ zQKygv(B##W=kY@3@!l>6w)F2utSqY%EmLc5D!= zyn<=T^x_3%S-uCeG)U7Ez{361ZdIcOyQR?u0y4EAONa`E70fYyJXo`;hGI>-rA=4F zX!s;TrYkU3fkFOSe-+HgT4t&+%Kuti|BA8Y z*I)$v$NJ}40uWZ_RQWm#EI^Vabny?Q2x6R+%M{n=853D?oHD7f+nw!Y(Nz%y6m#-x zzAYT>+YB7MUw)o6I~o~gvaym<9IeLZWY zF5PoFH|*uUAfVsjoOEzO)-Ci~#!(#(N?H_A!G7s$3{t&-!xN0Ty#P?%F=}V5S$cN$ zo2=%irat$=$OXm6m`4vYDXh@so9zzi#3iUk;9`i!&qBAOz8o{2mZKuDwo1?@KwLVOJ*5cNX_ivKAX zP_Gx}pBx__*xl@@>}YOhE^i#~?_Zze?;r2%CuF8%?j;@`Al^_CkY8Nf78CHduQ1Ke8eQ}EN#`4jDnq%T#bUA)U?bBpxZ$FAg8HmI!ZbzI^~;51u42QQ1009Tp^H? z1>_+&2y=09^vRUe(gutO!M#C&ON@rkl$;^@;Xz~m+)!s^1Pug)XY-oLjZBOC8z83Z z=TKrGb*}XA|7)iHefFaT^f!jxf8g^US-y-W45ojfg@i$#`YDKsoC?u`fep&Z#nnRE zf>9*{!o~QHa^8RXP*Pz*F|k0o7+G4VKrt)%{Jjw- zC6x1ccegdcHLsLq+{}baz~%malYzB>4Vo)?1EOijx7tHGD*t?+DRU6*OB|K810Hj= zOG)vBOV~;ciwRwgoO#Dk(-`ejuptW|^~or<#5GmyVwT)g89D(J7&+m0C>VGcqC-Jb zAZ?};Nu6*e9BG-X_F9V6u|J06B@tm<0&s>XaJ1B6SZNZdW)d{JU~7M`u&zr{;Y40V zNDOi+`cKi1-~DpoIPnL;6OgqIpb%6HgisLFVeFiaFDUhkFNDnCqvY*jokWd*Ibj7V z=1Tt(*&rN3e&g6j4_)AO@s;;CS3h-yj6b((eExRu`~u?)SN7*0Dz0*Xp-0P%4>^wZ zNy~_HDPS7Q{0W{yC6;VMk)redevH=SClFdXB5`6{-+E$cn9f2oBerki~9qbnOSAzL7~=3x#*vgmmFoE1s_%)Q}3jGl6O6(W@9(2q4}s% zECrSvbKXghj9b?Ie;gK=(~LPry!{>_w^5r17LCzCy;ZNPt!x78S^yBM{t8X?!3OFS zwfd?EGd0>w^HtXI5-s*g<{T5=VUL(w+ZtwYU~II7y>A=7k-P(2?K^(@3VgHLy}4^VdR$w4U-#O6zfVqI)bf!fp_NepF0We@5Hgf% zGnTwNw;ji!%Co>ytNo}B?1ev?x1qT^t0l5&)^vZva$^Hz$4wWc=4y39Th6xrEaWAt> zVV^~6gf6Db=22y?7+R>u)h5oK9}zl-uW0rLgTuh2VALpP1EsYLRW{M{wo7I(0h$z{ z>I{-pGlr%HQW~R#<_$0*Rg)%j*bY}7O?#p$EGGgajScnXSLD5NaV}ya+IHP`?Lb_!RVD}V2DVG)_`~o5Y4|4fohXdJiBk%{G z@?<=xIZ^ZO&gpB#n94mT4zKuju;hR+)@~dCcSkw5hn0{A+q^>dV+TZ!6yKN}DR>z1 z_XIm9+t6I)fewNbIN>`867{&}DZlXk==3#xX}LPy^GSwX*@qlk`TXYAax8{Lc53Ha z_hRawdoSLXoSd`8#LC+pbTsZx-6HzG^gws6?0M$?>@zuA&v~yYch~m$L*}@bfB+ug z`S#_+>$)}8jU{dCTIAvKvaT!tiUb~kDDor~AXm!{>pA=3xWQ9ycfYD4lWn0E-@(#G zOnNOUU+LnP7d0}SKaT;1y!i5@$JhEbdv*HZ`{_C(Vc=hivVe0Y@dH1fJFgeImL=uy z{(fbuc-g67X~$nmABhcFd?a=5=_CLw%^a$*{Um?17W$_0uY;ze{nFN@GJ-e4>Q#AO zIgr28iGEt|8ZN4q2sEm$LtbwGmhP|=R^@Lkm4=q$3ys@#@yl96Z<0|(V613Uz4XhmSX-Y_GgwC`+ zVd|S?5Hv;Vk5G8=2}8hnK#rqPFIYXg=)E+ic?eSEFM5wW!N4#rA!*X2XG)?*55rb# z0nkHJ5aQ-kgDtqwN7h_eJBa?D9o>*m5poJLJ@W#w{9WISFeYpnS*(SCBcr=u3t9gB zulytuDHshM8LH6msX!kqn{~~a&lHzGqV4$|1^StA$zF{($K~kDDsmANMQi3adULW( z27~JN6TF?WfQydvuFsD=6&tEWWqtx3#x<4ll(TK?2UV(daf0N{nG=jA>}q|f`$+Zf zHhqDsU99*Q=S$}J36wCvLu*_%Uu@Fn{H&TqJw*#FH0p?P^3R6QNc z7&Mj5%o(Iab$E^0IhZ-v*-e>DIGN3v7@3UBO<7o3&6(Ml*i1RN%$WKA|6hP`nWYj9 zV-mn}F>x?x=r9qo5Hjnf?h0b!0=U?i|6j2awiOLURSn$XTfQE>4Aow}3_`-mfG|Q3 zV-dtbdPwzwh=4p|O+i#4a5Pl0-WWJEZwAf!2~znxRNqn3#MBAXgwP37=EPJ>x9;!6 z)aj37_o*%Krz@`KjX&gxqYsajfur?(2ce&MvhV_#8Ofsu05j%zFq1sx91U6WV&d+W zV{#51Tlliy%gtZ!$r1ERZNyw7rNT^L{Y(=}_k~xdg45{5d*?2Dl1^c3P;jh;EbVzT z?fE=UA_xzn3=iT24})JPp$UjU_#Z6#`jB(+W zs9zO)!9$$D0WpdQ{kxd4B#gik#>6pwq_RV^X#pmTX!DGC!^RLX{kNRJ6nmr-1EXod ztDNA@4%G7fx>+$S4&+mPtDHZM_jo7zeTtd29~aZ67cEQadxUj=!8jt(50SN^Mmk`j z?>p)G(>S8l46$hjSUcjS7-Q88J5}|-wIXp)B|j?00y+}n2{fo%Bq=hbxHZ9%nm=^1 zHR5v>scR>?y6)Cp^{b=$sP*jgr>)FrKZ_EpNiC9;kV_M7N%a=i>mjTie=JcIUNl~H zCw^g+xf}6a4MErp@U?1SErvc?Jm0R$EXb`yz25@itBU)UTx|<~(=1d|T7NJ$=TE#A zuGB;w0oXrRO?;lPA001xordv*zFn(`o487ZBcaVDK0iv$CUG5?d;+grsD-xGUo0UHAG%4&Q zb13(pp|c<2SB9S4%jLHc9;o-n@v=KeJo6{$^|?J2?v&Fzy(w#t^;44P~uK$zo(sZGQkV&@g+ z$2pF}9dzRj8Mexn+4Rr$2>5`QB8lJM?#c8BUE)3SegPubHPOCzC0C$zR^1T&I%mufGk;4DTBUqYgPg}z~j3Mw~Q7 zQ`b&a&Qv-AaOjh8N$3TQ*QN1dBkWR7Q8rq0jcPp*r#@0@IDv-?RO>K-nSIt2Z3VZS zTIHv>wnJ+q!sd5{B1oAIR_6m^BW?6G{=P0-X6$J5MIoqSFkgSE|%-~m2I@D;5sQ&#=v>PziM##Uwpt<4mBkYd0r8G(Leuqi2cL~zYIX_4js<{zM z>Kww-n?c)De7bc@%BK7q-@xsP9yyz;Y7;%673SA^R}Y~k0Z?#Gt7hCvSK6OSSGjjC zMBZ7r&YWX>4s^q}C6B002yX=+fke|v%pv?qkB{)%`&b`6OmZGDW(qm(eC`x(*q9U#X9Ao`i`=b3;L z9Z1RdC~*Tv0i4(>e}k<9bWDGJn*Y8dvV2c?T68)mR-*&T(T+=2#5^O0#Xf9Scq1di z@s4g*XmDEW9fJ@seIIx$V(Ol;Zor^s(6|E`y~OIUjH283Vk^YBqWKOt?O=2({&+nI z$Btc+yW6XU;1^t+`}fZzcOOrhRQK0Q&A_Hs&~pb2z>*0ld%*_RA$(h`g^3nMgEIV% zk&T#Vw_Sgs2QtqsevX(Y34iGEE%8>5T}K3;2Znt?2N(Z9DW!c?EmnS&fhWxcNxb*q z53}mpg>MmR7cq+@cS=u*#Ak+eoTV7~_qC1iM>01YpGTyRx2lfaqxGz3QbURBdg5<@3vwjznD&|Jw9LH= ketFeobIZav(4H7}W-8MRCO#}9Ckq!lG#Qzgf;jYl0bptlD*ylh diff --git a/latex/main.tex b/latex/main.tex index 309451a..1c6eba6 100644 --- a/latex/main.tex +++ b/latex/main.tex @@ -96,7 +96,7 @@ Over the past decade, the video game development market has been dominated by tw \input{tex/4-metodologia} % Metodologia badań i kryteria porównania \input{tex/wywiady-analiza} \input{tex/implementacja-gry} % Analiza wywiadów z deweloperami gier -% \input{tex/narzedzia-profilowania} % Narzędzia profilowania wydajności +\input{tex/narzedzia-profilowania} % Narzędzia profilowania wydajności % \input{tex/5-testy-wydajnosci} % Testy wydajności % \input{tex/6-analiza-mozliwosci} % Analiza możliwości i funkcjonalności % \input{tex/7-porownanie-wynikow} % Porównanie wyników i analiza diff --git a/latex/tex/narzedzia-profilowania.tex b/latex/tex/narzedzia-profilowania.tex index 3a78d2d..27bfc67 100644 --- a/latex/tex/narzedzia-profilowania.tex +++ b/latex/tex/narzedzia-profilowania.tex @@ -11,32 +11,32 @@ Zarówno Unity, jak i~Unreal Engine oferują własne, wbudowane narzędzia do an \subsubsection{Unity Profiler} -Unity dostarcza rozbudowany profiler dostępny bezpośrednio w~edytorze (Window $\rightarrow$ Analysis $\rightarrow$ Profiler). Narzędzie to oferuje: +Unity dostarcza rozbudowany profiler dostępny bezpośrednio w~edytorze (Window $\rightarrow$ Analysis $\rightarrow$ Profiler)~\cite{unity_profiler}. Narzędzie to oferuje: \begin{itemize} - \item \textbf{CPU Profiler} -- analiza czasu wykonania poszczególnych funkcji, z~podziałem na kategorie (rendering, skrypty, fizyka, animacje) - \item \textbf{GPU Profiler} -- pomiar czasu renderowania na karcie graficznej - \item \textbf{Memory Profiler} -- szczegółowa analiza alokacji pamięci, wykrywanie wycieków - \item \textbf{Audio Profiler} -- monitorowanie obciążenia systemu dźwiękowego - \item \textbf{Physics Profiler} -- analiza wydajności silnika fizyki - \item \textbf{Frame Debugger} -- krokowa analiza procesu renderowania pojedynczej klatki + \item \textbf{CPU Profiler} -- analiza czasu wykonania poszczególnych funkcji, z~podziałem na kategorie (rendering, skrypty, fizyka, animacje)~\cite{unity_profiler_cpu} + \item \textbf{GPU Profiler} -- pomiar czasu renderowania na karcie graficznej~\cite{unity_profiler_gpu} + \item \textbf{Memory Profiler} -- szczegółowa analiza alokacji pamięci, wykrywanie wycieków~\cite{unity_profiler_memory} + \item \textbf{Audio Profiler} -- monitorowanie obciążenia systemu dźwiękowego~\cite{unity_profiler_audio} + \item \textbf{Physics Profiler} -- analiza wydajności silnika fizyki~\cite{unity_profiler_physics} + \item \textbf{Frame Debugger} -- krokowa analiza procesu renderowania pojedynczej klatki~\cite{unity_frame_debugger} \end{itemize} Unity Profiler umożliwia również zdalne profilowanie aplikacji uruchomionej na urządzeniu docelowym (np.~smartfonie), co jest szczególnie przydatne przy optymalizacji gier mobilnych. \subsubsection{Unreal Insights} -Unreal Engine oferuje narzędzie Unreal Insights, które zastąpiło starszy system Session Frontend. Kluczowe funkcjonalności obejmują: +Unreal Engine oferuje narzędzie Unreal Insights, które zastąpiło starszy system Session Frontend~\cite{unreal_insights}. Kluczowe funkcjonalności obejmują: \begin{itemize} - \item \textbf{Timing Insights} -- precyzyjny pomiar czasu wykonania poszczególnych systemów silnika - \item \textbf{Asset Loading Insights} -- analiza czasu ładowania zasobów - \item \textbf{Memory Insights} -- monitorowanie alokacji i~dealokacji pamięci - \item \textbf{Animation Insights} -- profilowanie systemu animacji - \item \textbf{Network Insights} -- analiza ruchu sieciowego w~grach multiplayer + \item \textbf{Timing Insights} -- precyzyjny pomiar czasu wykonania poszczególnych systemów silnika~\cite{unreal_timing_insights} + \item \textbf{Asset Loading Insights} -- analiza czasu ładowania zasobów~\cite{unreal_insights} + \item \textbf{Memory Insights} -- monitorowanie alokacji i~dealokacji pamięci~\cite{unreal_memory_insights} + \item \textbf{Animation Insights} -- profilowanie systemu animacji~\cite{unreal_animation_insights} + \item \textbf{Network Insights} -- analiza ruchu sieciowego w~grach multiplayer~\cite{unreal_network_insights} \end{itemize} -Dodatkowo Unreal Engine udostępnia komendy konsolowe (np.~\texttt{stat fps}, \texttt{stat unit}, \texttt{stat gpu}) pozwalające na szybki podgląd podstawowych metryk wydajności podczas rozgrywki. +Dodatkowo Unreal Engine udostępnia komendy konsolowe (np.~\texttt{stat fps}, \texttt{stat unit}, \texttt{stat gpu}) pozwalające na szybki podgląd podstawowych metryk wydajności podczas rozgrywki~\cite{unreal_stat_commands}. \subsubsection{Ograniczenia narzędzi wbudowanych} @@ -46,7 +46,6 @@ Pomimo rozbudowanych możliwości, wbudowane profilery silników posiadają isto \item \textbf{Brak standaryzacji metryk} -- każdy silnik definiuje i~mierzy parametry w~odmienny sposób, co utrudnia bezpośrednie porównania \item \textbf{Różna granularność danych} -- poziom szczegółowości raportów różni się między silnikami \item \textbf{Narzut profilowania} -- wbudowane profilery same generują obciążenie, które może być różne dla każdego silnika - \item \textbf{Brak dostępu do danych niskopoziomowych} -- profilery silnikowe operują na poziomie abstrakcji silnika, nie hardware'u \item \textbf{Nieporównywalność formatów wyjściowych} -- dane eksportowane przez różne profilery mają odmienne struktury \end{enumerate} @@ -55,11 +54,14 @@ Z~powyższych powodów zdecydowano się na zastosowanie zewnętrznego, niezależ \subsection{NVIDIA Nsight Graphics} \label{subsec:nvidia-nsight} -NVIDIA Nsight Graphics to profesjonalne narzędzie do profilowania i~debugowania aplikacji graficznych, oferujące głęboki wgląd w~działanie GPU niezależnie od używanego silnika czy API graficznego. +NVIDIA Nsight Graphics to narzędzie do profilowania i~debugowania +aplikacji graficznych, oferujące wgląd w~działanie GPU +niezależnie od używanego silnika czy API graficznego~\cite{nvidia_nsight, nsight_graphics_userguide}. \subsubsection{Uzasadnienie wyboru} -Wybór NVIDIA Nsight jako głównego narzędzia pomiarowego podyktowany był następującymi czynnikami: +Wybór NVIDIA Nsight jako głównego narzędzia pomiarowego podyktowany +był następującymi czynnikami~\cite{nsight_graphics_features}: \begin{itemize} \item \textbf{Niezależność od silnika} -- Nsight analizuje aplikację na poziomie wywołań API graficznego (DirectX, Vulkan, OpenGL), co zapewnia porównywalność wyników między Unity a~Unreal Engine @@ -71,10 +73,10 @@ Wybór NVIDIA Nsight jako głównego narzędzia pomiarowego podyktowany był nas \subsubsection{Możliwości narzędzia} -NVIDIA Nsight Graphics oferuje szereg funkcjonalności istotnych dla badań wydajnościowych: +NVIDIA Nsight Graphics oferuje szereg funkcjonalności istotnych dla badań wydajnościowych~\cite{nsight_graphics_userguide}: \paragraph{Frame Profiler} -Główny moduł analizy wydajności, umożliwiający: +Główny moduł analizy wydajności, umożliwiający~\cite{nsight_graphics_features}: \begin{itemize} \item Przechwycenie i~analizę pojedynczej klatki (frame capture) \item Hierarchiczny widok wszystkich wywołań GPU @@ -84,7 +86,7 @@ Główny moduł analizy wydajności, umożliwiający: \end{itemize} \paragraph{GPU Trace} -Moduł do długoterminowej analizy wydajności: +Moduł do długoterminowej analizy wydajności~\cite{nsight_gpu_trace}: \begin{itemize} \item Rejestrowanie metryk przez określony czas (nie tylko pojedyncza klatka) \item Wykrywanie spadków wydajności i~ich przyczyn @@ -93,27 +95,13 @@ Moduł do długoterminowej analizy wydajności: \end{itemize} \paragraph{Shader Profiler} -Narzędzie do optymalizacji shaderów: +Narzędzie do optymalizacji shaderów~\cite{nsight_graphics_userguide}: \begin{itemize} \item Analiza wydajności poszczególnych shaderów \item Identyfikacja nieefektywnych instrukcji \item Pomiar occupancy (wykorzystania jednostek obliczeniowych) - \item Sugestie optymalizacyjne \end{itemize} -\subsubsection{Konfiguracja środowiska pomiarowego} - -Przed przeprowadzeniem pomiarów skonfigurowano środowisko w~następujący sposób: - -\begin{enumerate} - \item Wyłączenie V-Sync w~obu silnikach (eliminacja sztucznego ograniczenia FPS) - \item Ustawienie identycznej rozdzielczości renderowania (1920$\times$1080) - \item Wyłączenie dynamicznego skalowania rozdzielczości - \item Ustawienie stałej częstotliwości zegara GPU (eliminacja power throttlingu) - \item Zamknięcie zbędnych procesów w~tle - \item Oczekiwanie na ustabilizowanie temperatury GPU przed pomiarem -\end{enumerate} - \subsection{Przetwarzanie danych z~Nsight} \label{subsec:przetwarzanie-nsight} @@ -121,11 +109,11 @@ Dane zebrane przez NVIDIA Nsight wymagają odpowiedniego przetworzenia w~celu uz \subsubsection{Eksport danych} -Nsight umożliwia eksport danych w~kilku formatach: +Nsight umożliwia eksport danych w~kilku formatach~\cite{nsight_graphics_userguide}: \begin{itemize} - \item \textbf{CSV} -- tabularyczne dane liczbowe, idealne do dalszej analizy + \item \textbf{CSV} -- tabularyczne dane liczbowe \item \textbf{JSON} -- strukturalne dane z~pełną hierarchią wywołań - \item \textbf{HTML Report} -- czytelny raport z~wykresami (mniej przydatny do automatyzacji) + \item \textbf{HTML Report} -- graficzny raport z~wykresami \end{itemize} W~niniejszej pracy wykorzystano format CSV ze względu na łatwość importu do narzędzi analizy statystycznej. @@ -134,7 +122,7 @@ W~niniejszej pracy wykorzystano format CSV ze względu na łatwość importu do Z~danych eksportowanych przez Nsight wyodrębniono następujące metryki: -\begin{table}[htbp] +\begin{table}[H] \centering \caption{Kluczowe metryki wydajnościowe z~NVIDIA Nsight} \label{tab:metryki-nsight} @@ -159,32 +147,6 @@ Memory Bandwidth & GB/s & Przepustowość pamięci GPU \\ \end{tabular} \end{table} -\subsubsection{Metodyka pomiarów} - -Dla każdej konfiguracji testowej przeprowadzono serię pomiarów według następującego protokołu: - -\begin{enumerate} - \item Uruchomienie aplikacji i~oczekiwanie 30 sekund na stabilizację - \item Rozpoczęcie rejestracji GPU Trace (czas trwania: 60 sekund) - \item Przechwycenie 10 pojedynczych klatek w~równych odstępach czasu - \item Zakończenie rejestracji i~eksport danych - \item Powtórzenie procedury 3 razy dla każdej konfiguracji -\end{enumerate} - -Wyniki uśredniono, odrzucając wartości odstające (outliers) zidentyfikowane metodą IQR (InterQuartile Range). - -\subsubsection{Automatyzacja analizy} - -W~celu zapewnienia powtarzalności i~eliminacji błędów ludzkich, proces analizy danych został częściowo zautomatyzowany za pomocą skryptów Python. Główne etapy obejmowały: - -\begin{itemize} - \item Parsowanie plików CSV eksportowanych z~Nsight - \item Agregację danych z~wielu sesji pomiarowych - \item Obliczanie statystyk opisowych (średnia, mediana, odchylenie standardowe) - \item Generowanie wykresów porównawczych - \item Eksport wyników do formatu LaTeX (tabele) -\end{itemize} - \subsection{Podsumowanie wyboru narzędzi} \label{subsec:podsumowanie-narzedzi} @@ -193,8 +155,6 @@ Zastosowanie NVIDIA Nsight jako głównego narzędzia profilowania zapewnia: \begin{enumerate} \item \textbf{Obiektywność} -- pomiary wykonywane na tym samym poziomie abstrakcji dla obu silników \item \textbf{Porównywalność} -- identyczne metryki i~format danych - \item \textbf{Wiarygodność} -- niskopoziomowe pomiary eliminują artefakty wprowadzane przez profilery silnikowe \item \textbf{Powtarzalność} -- standaryzowana procedura pomiarowa \end{enumerate} -Wbudowane profilery Unity i~Unreal Engine pozostają cennym narzędziem podczas procesu optymalizacji, jednak do celów badawczych wymagających bezpośredniego porównania między silnikami, zewnętrzne narzędzie oferuje znaczące przewagi metodologiczne.