From doing a mobile game as well, I've learnt a few things that helped me to keep the performance smooth.
1. Limit TLE's (Top level events). I would say is the most important and keep this in mind at all times. The best way to do this is to Group Events in a smart way, and turn those groups off when they are not needed, and turn them on when needed. As your project grows you will have a lot events "listening" for the right conditions to be met. If you have too many of those running every tick you will notice a performance drop, so when those events are not needed, turn off the group. For example: if you have a couple of events that detects conditions between objects, close the group if that objects involved is not moving, or is not on screen, by distance, or any other smart way you can think of. The less number of events the engine has to go through every single tick the better performance you will have.
2. Structure the conditions in a smart way. If you have an event with several conditions try to limit the picking of objects. The more objects your condition picks the heavier this event will be. Be smart, and try to reduce the picking to as few objects as possible, using conditions. I managed to reduce my Z-Ordering for isometric game to only sort objects that are overlapping, only one time if they actually are overlapping. Instead of sorting the Z order each tick my z-order will only order once if any moving object is actually moving, and actually needs to be sorted. Took my Z ordering down from sorting all sprites in layout every tick, to only 2 overlapping sprites maybe once every 2-3 seconds if they are actually overlapping. Made a huge difference to performance. And again, closing the Zorder group altogether when not needed.
3. Use functions / Trigger once / or Once every XX seconds. Unless a function is called it's not gonna be using any performance and they are naturally triggered once when called, so have functions do most of your heavy work that doesn't happen so often, they are very flexible and can take a lot of params. Trigger once while true can be useful in some cases, but "once every XX seconds" even more so. For example: If your character is close to a pickup like a coin or whatever. You don't need to check every tick if that's the case. Reduce it to something like every 0.1 seconds, that way you will save a bit of processing power.
That's just some of the stuff I learnt while doing my game to have it run much smoother. Hope that Helps.