First of all, if its D3d9sprite. You should limit to only 1 LPD3DXSPRITE at a time.
The main problem is that performance. 10 sprite is nothing, but when u have about 1000 sprite onscreen it will be the problem. Use as less sprite->begin(),sprite->end() as possible!
I dont know how LPD3DXSPRITE work, but with 1 begin/end they are extremely fast (render 1000-1500 sprite in 1ms), with hundreds of different texture. That will be impossible if using primitive (u have to change textures so cant do batching well). However u will lack the ability to use Shader (u still can use but in limit way... I'm still studying it ). Because the speed is unchallanged so it's perfect for 2d game !
I dont know what you mean "sprite" in your question. Is that the Texture or the LPD3DXSPRITE. It seem that u worry about Many sprite using the same texture. And when u release the sprite, u release the texture, then it cause memory leak if other sprite still use that texture ? It's just a simple problem of managing resource/pointer. Never load a texture more than 1 time unless special case, it's just unlogical!
Edited by greenpig83, 16 January 2014 - 04:59 PM.