Not that experienced with optimisation but im surprised how many enemies there could be at once. One of the things I remember doing was instead of updating the destination for the enemies every frame it was done every 0.5 seconds.