About optimizations... Is construct sorting objects that share the same texture? It's a lot faster to draw similar things at the same time, so the GPU doesn't have to swap textures all the time.
...But I guess you're already doing this, right?
(Or maybe that's what batching is? I'm not that good at this kind of stuff)