just like to mention that you can use on collision in a subevent, ashley comfirmed that it does work,
doing collision check every couple of ticks can be a huge save
i do this, system compare tickcount%2 = 0 (checks every 2 ticks)
subevent on collision
depending on how big and how fast your objects are you can up this number
something that could be tried to improve on this method (c2 internally)
having a collision budget, there's a timer that checks how long it takes for collisions to be checked, if more than you budget, it stops the objectloop and continue on the next tick where the loop has ended,
the way its now if you have more collision checks than you system can handle it drags down the performance just to make sure every object is checked, wich could potentially be spread over more ticks,
and further i also would like too see if splitting the actual screen in 4 or 8 could improve performance