Feedback from trying to selectively profile our character health events using Unity 2020.1.3f1
opened this issue · comments
Deleted user commented
General
- when methods successfully added (via profiler hierarchy, methods explorer or component) and performance stays normal, it works great so far
- hard to tell in profiler hierarchy view which samples were added due to selection. suggestions:
- customize sample names (seems to be the case in some screenshots in documentation?)
- change background color of the row
- display an icon somewhere
- adding class names to sample names should be an option, otherwise it might get confusing. especially when using deep profiling
Add profiling via component context menu
- "Component->enable profiling on all" takes a long time (~45s on one of our biggest components (character class with 385 methods), ~15s on medium sized component (health class with 115 methods))
- when adding during runtime: can i only turn this off again by going to the same component? methods do not show up in the Selective Profiling window when added this way. can be easily forgotten.
- nice to have: option to only add methods of this class specifically (basically excluding inherited methods). or maybe allow fine grained selection of full inheritance tree?
- could this also be added to script file context menu? so it doesn't only work on components
- NOTE: most runtime performance issues described below might be caused by high deep profiling depth when adding the methods (i set it to 5 for testing early on and forgot it for a while).
- performance drop (to below 1fps) after adding profiling for medium sized component during playmode. disabling this again takes ~120s, but performance still low
- the component does not have any expensive update functions, it should only incur profiling overhead when actually triggering character/health specific events such as damaging an NPC
- UnitySynchronizationContext.ExecuteTasks with ~3000ms and allocating a few MB each frame
- complete editor hang when adding ^ this expensive thing to selective profiling
- also complete editor hang when triggering some health related events (component that was added to profile)
- editor hangs a while after enabling profling for big component (see above) in editmode and bad performance afterwards
- EditorApplication.Internal_CallUpdateFunctions with ~2000ms per frame and a few hundred (!) MB GC Alloc per frame
- stabilizes after a while?
- same behaviour when removing all methods again, but does not seem to stabilize or takes way longer
- can be reproduced by 1) starting unity 2) adding component 3) removing all methods in Selective Profiling window
Tech specs:
Intel-i5 10400 @2.9GHz
32GB RAM
Project & Unity install on nvme SSD
Playmode normally runs at 90-100FPS on this machine in the scene i was testing