Instance variables are good for filtering, so yes they go first.
There's no reason for sub events to be less efficient. It's what you do with the cpu that causes issues, usually loops.
You may not even need the for each, depending of what the action is.