- Unity 2017 Game Optimization(Second Edition)
- Chris Dickinson
- 472字
- 2021-07-02 23:20:58
Pursuing Performance Problems
Performance evaluation for most software products is a very scientific process. First, we determine the maximum/minimum supported performance metrics, such as the allowed memory usage, acceptable CPU consumption, the number of concurrent users, and so on. Next, we perform load testing against the application in scenarios with a version of the application built for the target platform, and test it while gathering instrumentation data. Once this data is collected, we analyze and search it for performance bottlenecks. If problems are discovered, we complete a root-cause analysis, make changes in the configuration or application code to fix the issue and repeat it.
Although game development is a very artistic process, it is still exceptionally technical, so there is a good reason to treat it in similarly objective ways. Our game should have a target audience in mind, which can tell us what hardware limitations our game might be operating under and, perhaps, tell us exactly what performance targets we need to meet (particularly in the case of console and mobile games). We can perform runtime testing on our application, gather performance data from multiple subsystems (CPU, GPU, memory, the Physics Engine, the Rendering Pipeline, and so on), and compare them against what we consider to be acceptable. We can use this data to identify bottlenecks in our application, perform additional instrumentation, and determine the root cause of the issue. Finally, depending on the type of problem, we should be capable of applying a number of fixes to improve our application's performance to bring it more in line with the intended behavior.
However, before we spend even a single moment making performance fixes, we will need to prove that a performance problem exists to begin with. It is unwise to spend time rewriting and refactoring code until there is good reason to do so, since pre-optimization is rarely worth the hassle. Once we have proof of a performance issue, the next task is figuring out exactly where the bottleneck is located. It is important to ensure that we understand why the performance issue is happening, otherwise we could waste even more time applying fixes that are little more than educated guesses. Doing so often means that we only fix a symptom of the issue, not its root cause, and so we risk the chance that it manifests itself in other ways in the future, or in ways we haven't yet detected.
In this chapter, we will explore the following:
- How to gather profiling data using the Unity Profiler
- How to analyze Profiler data for performance bottlenecks
- Techniques to isolate a performance problem and determine its root cause
With a thorough understanding of a given problem, you will then be ready for information presented in the remaining chapters, where you will learn what solutions are available for the issue we've detected.
- Learn TypeScript 3 by Building Web Applications
- 單片機C語言程序設計實訓100例:基于STC8051+Proteus仿真與實戰
- 程序員考試案例梳理、真題透解與強化訓練
- 64位匯編語言的編程藝術
- 秒懂設計模式
- Python數據可視化之Matplotlib與Pyecharts實戰
- Kali Linux Wireless Penetration Testing Beginner's Guide(Third Edition)
- 概率成形編碼調制技術理論及應用
- VMware虛擬化技術
- Visual Basic程序設計實驗指導(第二版)
- 響應式架構:消息模式Actor實現與Scala、Akka應用集成
- Unity 3D/2D移動開發實戰教程
- Django 3.0應用開發詳解
- Android應用開發實戰
- Python 3 Object:oriented Programming(Second Edition)