Ashley , i noticed that the debugger can give a wrong impression about the performance,
while inspect is active (starts at system) the most intensive actions the cpu is doing is updating the debugger itself
if it has to update lets say 200object, = 200+ debugger fields, it drains nearly 40% of my cpu
if i switch to profile its max 6%-7% (actually watch with not fields has the most accurate cpu usage 5%)
if i switch to an specific object to inspect, the cpu go's to 8% (it updates only this fields)
then inspect>system again, its + 34%
i think that inspect (system) updates all fields of the objecttree, but it should only update the system screen.
+ a state save of what your doing would also be good> saving inspect/watch or profile