I think the Filter (Exists ...) is better than Exists (Filter ...) in performance, because the first has less cell calculation than the second within the filter function.
We use NonEmpty function to replace it.