I don't think I'm getting any new behavior in terms of updates firing, it's all the same as it ever was back to oldest versions of Unity, with LateUpdate only firing when you do something in an inspector or drag something in the Scene view.
Here is what I'm encountering - you can see on the gif below how I get a spike every time I move a label:
The spike is not originating at the "
|| !Application.isPlaying" point, of course - it just allows the content of LateUpdate to execute every single time if you're in the Editor. As you can see here, the time taken by something starting in LateUpdate is a sum of operations on every UIPanel in the scene (I have around 40 of them to avoid redraws on move animations and such):
LateUpdate is not an endpoint where all that time is taken, of course, it's just a limit of how far profiling goes. Can't do a deep profile outside of play mode, Unity 5.5.0 seems to dislike that and crashes, but I'm fairly sure that this bit explains where all the load comes from:
for (int i = 0, imax = list.Count; i < imax; ++i)
list[i].UpdateSelf();
So, my question is - why is everything updated every LateUpdate, when that's seemingly unnecessary (everything continues to update fine after I removed "
|| !Application.isPlaying") and triggers a costly panel update every single frame? Am I missing some hidden problem with Unity Editor that makes such a frequent and unfiltered updating of all panels necessary?