I'm the developer of Tangledeep, a PC game ported to Switch earlier this year. I'm currently doing an optimization pass on the game as we have some spiky frame drops despite it being a relatively simple-looking 2D game. One of the biggest performance issues we're having is when Unity redraws the canvas that our game log resides on. The game log (or combat log) is an always-on UI element that resides on its own canvas. Most game events are written to the log, so it updates at least once per second. According to Unity's deep profiler, this is the source of some substantial delays (4ms in deep profiling mode, one of the highest in the game!) You can see most of the usage in this screenshot, as a result of TMPro's Rebuild() function. https://cdn.discordapp.com/attachments/160444359815331841/594699050515693578/unknown.png To describe how we're using TextMeshProUGUI for the log: 1. The log resides in a "Screen Space - Overlay" canvas. Non-pixel perfect, no raycaster. 2. Canvas Scaler is being used on the canvas. 3. The log content is within a ScrollRect which uses a Mask. The content itself is a single TMProUGUI. 4. We are NOT using raycasting on the canvas or log objects, nor are we using Best Fit. However we use Rich Text as there is a ton of color and <sprites> being used throughout the log. 5. I have tried removing the ScrollRect component but it does not seem to make a significant CPU difference in the problem function above. 6. The average string size is about 500-600 characters. Is there anything else we can do to try and reduce the CPU usage here? Thanks in advance.