Drawing routine design

Hi, I have a question about a way of drawing things. In my application, I
draw things like this:

  1. Load all the sprites and backgrounds into a vector
  2. Set the current background
  3. Set the visibility of sprites (show or hide)
  4. Blit the current background
  5. Blit the visible (unhidden) sprites and ignore the hidden sprites
    recursively in the vector
  6. Flip the surface

I was wondering, should I stick with this or should I do it like this:

  1. Load all the sprites and backgrounds into a vector
  2. Set the current background
  3. Make a drawing queue from the sprites (take the sprites’ pointers from
    the vector and push it into a queue)
  4. Blit the current background
  5. Blit sprites from the queue
  6. Flip the surface
  7. Clear the queue

I know that in the second one, I can draw things in any order I want
whereas in the first one, the order is strictly from the order the sprites
were pushed. But, which one is faster?

Thanks in advance.