Yes, you are right that `Vector` is optimized for appending and prepending single elements. I thought it handled merging of two vectors as well, but looking at the code (and your timings) it obviously doesn't.

Maybe add a comment about that we expect `others` to be very small, and that `Vector` is optimized for this use case.

I also think that `foldRight` reads better, but that might just be me.
`theStash = others.foldRight(theStash)((e, s) => e +: s )`