SIGN IN SIGN UP

Optimize focus operations by caching descendants and ancestors. (#42683)

This optimizes certain paths in the FocusManager, FocusNode, and FocusScopeNode classes in order to fix a regression in stock_animation_open_first_frame_average when I added more focus nodes to the tree to do focus traversal.

Mainly I removed some remaining sync* iterators, and also started caching the computation of descendants and ancestors, since those are iterated over fairly often.

This improves stock_animation_open_first_frame_average by about 2.8% overall (so about half of a 4.9% regression, both averaged over 10 runs).

Addresses #42564
G
Greg Spencer committed
134ac429cfccd5ec2f1648da1539a30fce157425
Parent: 6b2cc85
Committed by GitHub <noreply@github.com> on 10/15/2019, 1:50:38 AM