SwiftCrossUI's AndroidBackend has been hanging for a few hundred milliseconds (and sometimes over a second) after each view update, so @bbrk24 collected a flame graph to investigate further.

It turns out that Android's RelativeLayout view measures each of its children twice per measurement pass, leading to exponential time complexity when nested!

Switching to a custom ViewGroup implementation brought the offending measurement pass from ~500ms down to ~7ms.

https://github.com/moreSwift/swift-cross-ui/pull/550