It's pretty ambitious;
Maybe write out a routine that does everything that a bullet needs to do each frame (update position, plot, collision check), inline all the function calls, optimise what you can, then do a cycle count.
I did it like this so that everything moved together, as on my first write of the game, when bullets moved in seperate frames, it looked a bit odd - especially when you shot a semi-circle all on the same frame, then some bullets moved, and some didn't. But it's something I can try again and see.
For something like this, I would make "buckets" and the you update the bucket at once, and then stager the bucket updates. This way a semi circle could be put into 1 bucket so they all get updated.
With bullets, I imagine they can't move very fast each frame