Another good tip.
Good practice is to have as few events running as possible. Place events in groups and close the groups when they are not needed. Constantly having the event sheet check through all the conditions will get heavier the more you have.
For example: If you have an event checking the distance between objects, and none of these objects are visible on screen at the moment you can pretty much disable disable those events by putting them in a group and disable the group altogether.
That's one of the major optimizations i did for my mobile games that gave me a lot more bang for the buck.
I had a quite a lot of stuff constantly checking in the background every tick, after optimizations like that, basically my game was actually really using about 20% of all the events at any given moment, instead of checking through all of them. A lot of small things add up.
So for now i always think like this.
The best code is no code at all.
You'll have much better performance the less your game is doing every single tick. Closing groups, and using every X seconds instead of every tick can boost performance quite a bit. Especially on mobile where you have pretty limited CPU power.