What do you want?
What trade-offs? Do you want a 1% speed reduction, 10%, 50%?
Would 10% speed reduction be OK if it took 10 times the amout of memory?

Do you have reason to think the code is not efficient?
Why do you think there is a significantly faster way? IMO significant would be 50%.

If this were part of a real application, and the application by your definition was slow, would you single out this piece of code, or would you find the real bottleneck?