پروفایلبندی و تنظیم عملکرد، کار پیچیدهای است که میتواند بیشتر شبیه یک هنر باشد تا یک علم. اجزای متحرک زیادی که باید در یک بازی کاملاً هماهنگ شوند، همراه با پیچیدگی در یک صحنه خاص، میتوانند درک و جداسازی مشکلات را دشوار کنند. در ChromeOS، بسیاری از ابزارها با در نظر گرفتن چیپستهای ARM طراحی شدهاند. در زیر چند نکته برای کمک به سرعت بخشیدن به این فرآیند آورده شده است.
نکتهای که باید هنگام بهینهسازی عملکرد بازی خود در ChromeOS در نظر داشته باشید این است که مشکلات اساسی عملکرد در همه دستگاهها مشترک است و بهبودها به نفع عملکرد و عمر باتری برای همه کاربران خواهد بود. ChromeOS، با تمایل به نمایشگرهای بزرگتر و دستگاههای ورودی دسکتاپ، ممکن است مشکلات خاصی را راحتتر نشان دهد. به عنوان مثال، یک الگوریتم بارگذاری بافت ناکارآمد ممکن است در دستگاههای تلفن همراه رده بالا "خوب کار کند"، اما نتواند در Chromebook با نمایشگر 4k به خوبی عمل کند. بهبود الگوریتم، بازی را در همه دستگاهها بهبود میبخشد.
اگر در زمینه پروفایلینگ تازهکار هستید، یک رویکرد کلی خوب این است که:
- تعیین کنید که آیا عملکرد به موارد زیر محدود میشود:
- پردازنده
- پردازنده گرافیکی
- سایر: ورودی/دیسک/شبکه
- سعی کنید علت اصلی را جدا کنید
- سعی کنید بهینه سازی کنید
- تکرار
در بیشتر موارد، بازیها خود را «محدود به CPU» یا «محدود به GPU» نشان میدهند. با استفاده از نکات و ابزارهای پروفایلینگ زیر، سعی کنید مشخص کنید که سیستم هر فریم را «در کجا صرف میکند». به عنوان مثال، اگر محاسبه و بارگذاری رئوس قبل از شروع رندر توسط GPU زمان زیادی طول میکشد، ممکن است بازی شما محدود به CPU باشد. در عوض، اگر از تعداد زیادی فیلتر دقیق مبتنی بر GPU استفاده میکنید، احتمالاً بازی شما محدود به GPU است. به یاد داشته باشید که بسیاری از تلفنهای همراه و دستگاههای ChromeOS کارت گرافیک مجزا ندارند. یک بازی دسکتاپ که فرض میکند فیلترهای GPU سریع هستند، ممکن است متوجه شود که GPUهای یکپارچه برای رندر هر صحنه خیلی طولانی میشوند.
برای جزئیات بیشتر در مورد نحوهی رویکرد پروفایلینگ، راهنمای ARM در مورد «فرآیند بهینهسازی» را بررسی کنید.
ابزارها
اگرچه مطمئناً میتوان گلوگاهها را به تنهایی تعیین کرد، اما داشتن ابزارهای مناسب، تجزیه و تحلیل عملکرد بازی شما را آسانتر میکند و به شما اطمینان میدهد که روی موارد صحیح تمرکز میکنید. ابزارهای زیادی وجود دارد، اما در اینجا برخی از برنامههای کاربردی ما آورده شده است.
پروفایلر اندروید استودیو
سادهترین راه برای شروع پروفایلبندی هر برنامه اندروید، استفاده از پروفایلساز یکپارچه اندروید استودیو است. در اندروید استودیو، به جای زدن دکمه «اجرا»، کافیست «پروفایل» را انتخاب کنید تا برنامه شما اجرا شود و به صورت آنی از میزان مصرف CPU، حافظه و شبکه مطلع شوید. ردیابیهای ساده CPU میتواند راهی سریع برای جداسازی بخشهایی از کد برای بررسی باشد.
این ابزار نه اطلاعات دقیقی از میزان استفاده از پردازنده گرافیکی ارائه میدهد و نه اطلاعاتی از اینکه بین هر همگامسازی فریم چه اتفاقی میافتد، بنابراین، اگرچه ابزار خوبی برای داشتن در جعبه ابزار است، اما احتمالاً برای اجرای بازی شما با حداکثر عملکرد کافی نخواهد بود.
پروفایلر اسنپدراگون
از آنجا که رفتار بازیهای شما در دستگاههای مختلف یکسان خواهد بود، یک راه خوب برای دریافت اطلاعات دقیق عملکرد، استفاده از Snapdragon Profiler در یک گوشی مبتنی بر Qualcomm و ARM است. اگرچه این ابزار مستقیماً در یک دستگاه ChromeOS پروفایلینگ نمیکند، اما باید اطلاعاتی در مورد اینکه بازی شما بیشتر زمان خود را در هر فریم کجا صرف میکند، به شما بدهد و میتواند به شما بینشی در مورد اینکه کدام فراخوانیهای GPU به طور خاص استفاده میشوند، ارائه دهد.
برای مثال، اگر میبینید که زمان زیادی در فیلترهای ناهمسانگرد پردازندهی گرافیکی شما صرف میشود و بر کار انجام شده در هر فریم تسلط دارد، احتمالاً میتوانید با تغییر این تنظیم، افزایش عملکرد قابل توجهی داشته باشید.
اگر میبینید که زمانهای GPU کوتاه و منظم هستند، اما زمانهای CPU غالب هستند و باعث میشوند همگامسازی فریمها را از دست بدهید، نگاهی به الگوریتمهای بارگذاری/آمادهسازی فریم بافت خود بیندازید.
برای اطلاعات بیشتر به مستندات رسمی استفاده مراجعه کنید.
استودیوی موبایل ARM
یکی دیگر از ابزارهای مفید برای پروفایل کردن دستگاههای ARM، ARM Mobile Studio است. برخی از توسعهدهندگان ممکن است آن را به Snapdragon Profiler ترجیح دهند، اما میتوان از آن به روشهای مشابهی استفاده کرد. به مستندات رسمی استفاده از آن مراجعه کنید.
بازرس پردازنده گرافیکی اندروید
بازرس پردازنده گرافیکی اندروید (Android GPU Inspector ) ابزاری جدید است که توسط گوگل توسعه داده شده و بهطور خاص برای کمک به شما در دستیابی به بهترین عملکرد از بازی خود با OpenGL و Vulkan طراحی شده است. این ابزار در حال حاضر در حالت پیشنمایش توسعهدهندگان قرار دارد و ممکن است راهاندازی آن کمی زمان ببرد و در حال حاضر فقط روی تعداد انگشتشماری از دستگاهها کار میکند. این ابزار نوید میدهد که در آینده یکی از ابزارهای اصلی برای پروفایل گرافیکی باشد. به مستندات رسمی مراجعه کنید.
بررسی اجمالی ARC ردیابی
همچنین یک ابزار عمومیتر - ARC Overview Tracing - وجود دارد که مشابه ابزار ARC Graphics Tracing که در بالا ذکر شد، عمل میکند. این ردیاب، معیارهای سطح بالایی در مورد یک برنامه و عملکرد ChromeOS ارائه میدهد. دادههای خوانده شده، FPS برنامه و خود Chrome و همچنین میزان استفاده از CPU، GPU، مصرف برق و موارد دیگر را به شما نشان میدهند. میتوانید این ابزار را چندین بار اجرا کنید و نمودارهایی را برای هر اجرا که با رنگهایی برای تمایز آنها پوشانده شده است، مشاهده کنید. هر مدل ردیابی در پوشه Downloads شما ذخیره میشود و میتواند برای مقایسههای بعدی دوباره وارد شود. برای بررسیهای کلی سلامت برنامه، ARC Overview Tracing مکان خوبی برای شروع است.
برای دسترسی به این ابزار، در مرورگر ChromeOS به آدرس chrome://arc-overview-tracing مراجعه کنید.
مراحل بعدی
بنابراین شاید شما برخی از گلوگاهها را پیدا کردهاید اما مطمئن نیستید که در مورد آنها چه کاری باید انجام دهید. یا آنها را پیدا کرده و برطرف کردهاید، اما مطمئن نیستید که در مرحله بعد به کجا بروید. در زیر، لیستی از نکات و منابع عمومی اندروید و موتور را برای شما گردآوری کردهایم.
نکات عمومی
پورتال توسعهدهندگان اندروید نکات بسیار خوبی برای افزایش عملکرد برنامه شما دارد. ملاحظات زمان بارگذاری، نحوه استفاده از چندنخی، مدیریت تأخیر ورودی و موارد دیگر را میتوانید در آنجا بیابید.
به یاد داشته باشید که از همان ابتدا و به طور مرتب پروفایل خود را ثبت کنید، به خصوص اگر دستگاههای کمقدرتتری را هدف قرار میدهید یا مرزهای معماری پیشرفته را جابجا میکنید. پیگیری آمار عملکرد برنامهتان به شما کمک میکند تا تشخیص دهید کدام تغییرات نرخ فریم شما را کاهش دادهاند و کدامها به شما کمک میکنند تا آن تجربه روان مورد نظرتان را حفظ کنید.
موتور یونیتی
یونیتی علاوه بر مستندات عمومی اندروید ، مستندات مخصوص سیستم عامل کروم را نیز ارائه میدهد تا به شما در ایجاد یک برنامه ChromeOS کارآمد با استفاده از موتور خود کمک کند. مستندات ChromeOS آنها را در مورد شروع به کار ، ورودی ، اشکالزدایی و ساخت که شامل نحوه ایجاد نسخههای x86 است، بررسی کنید. برای محتوای آنها در مورد عملکرد، به بخش درک بهینهسازی و دوره آنها در مورد عملکرد و بهینهسازی مراجعه کنید.
راهنمای ARM در مورد پروفایلبندی و بهینهسازی بازیهای Unity و بهترین شیوههای مرتبط با آنها را مطالعه کنید. این راهنما شما را در فرآیند پروفایلبندی یک بازی نمونه در Unity با ابزار Streamline، که یکی از جنبههای ARM Mobile Studio است، راهنمایی میکند.
موتور غیرواقعی
آنریل دستورالعملهای عملکرد و نکات و ترفندهای مخصوص به خود را نوشته است که به شما یاد میدهد چگونه از بسیاری از گزینهها و تنظیماتی که موتور ارائه میدهد، به بهترین شکل استفاده کنید. در اینجا مواردی مانند ترفندهای سطح جزئیات، نحوهی بهرهبرداری حداکثری از نورپردازی، راهنماهای گام به گام در مورد تنظیمات کیفیت مواد و سایهزنها و سایر پیشنهادات را خواهید یافت.
برای بهینهسازیهای بیشتر مبتنی بر گرافیک، ARM راهنمایی برای بهینهسازی بازیهای موبایل نوشته است. نکات بهینهسازی عمومی و همچنین ملاحظات گرافیکی خاص Unreal را میتوانید اینجا بیابید.