Over a decade ago in C2 there was a new thing called "collision cells", and in order to use them you had to have your "overlapping" condition be first in the top level event (not as a subevent).
It can feel counterintuitive, because often we prefer to have other filtering conditions before doing something as expensive as a collision check. But apparently it was worth the trade off.
I couldn't find anything about this in C3 manual, is this still the best practice?
Here's the old blog post that explains the feature: construct.net/en/blogs/ashleys-blog-2/collision-cell-optimisation-914