Sprites are pretty lightweight and shouldn't cause a significant delay by creating them per frame rather than updating persistant ones. Keeping persistant (create them before the loop and re-use them) sprites, though, may help in other ways such as not requiring updating certain values that are the same as before (for example, the colour of that sprite might be the same so there's no need to update it).
However, as I mentioned above, sprites are quite lightweight (they are effectively just tens of floats and a pointer) so they shouldn't be too slow. Just keep it as low as possible; if it's possible to do without recreating them, it probably makes more sense to do so.
Also, to clarify, to draw the sprite, it would be window->draw(spriteInstance); not window->display(spriteInstance);