Looks like each of the game objects under the canvas is performing a lookup to see the canvas it belongs to. This makes a huge amount of GetComponent calls (traverses the hierarchy up until a canvas is found).
I wonder if there could be a solution (requires a modification to the UI code) where each element would already store a reference to the canvas, avoiding the need for this lookup.
Is such a solution possible? or what would be the better way of overcoming this specific allocation ?
I submitted a bug relating to performance of MaskUtilities.FindRootSortOverrideCanvas etc which walk your UI objects from the children up thru each parent checking to see if its a canvas causing a load of allocation and CPU time to be spent. It was closed as ‘by design’.
I wish someone “official” could comment on this, and whether there’s anything planned to improve both CPU performance and memory consumption related to the UI and particularly to this method