Thanks for the feedback!
Yeah, performance is an issue here. I wanted it to be somewhat realistic (units only shooting at enemies they have an uninterrupted line of sight to, realistic movement of projectiles and collision detection so that they won't deal damage if they miss, projectiles being several seconds in the air so it's not trivial where to aim if you want to hit a moving target, etc.), so there are a lot of calculations going on in the background each simulation step. Especially for a large number of units (this is where it is fun) this makes the simulation quite slow. But I'm still trying to optimise the code, maybe I will find some way to improve that without changing the mechanics and AI too much.
I also saw that sometimes, especially if there are lots of units some of them will take some time until they start moving. Normally, they all should move right from the beginning of the match. Couldn't figure out the reason until now...