in compose, is it because of the boxing and unboxing ? Also I realized that looping throw the indices and getting each element by index is a lot faster than looping throw elements directly specially when I'm drawing a lot of objects so fast in canvas.
It's also named terribly since it's only fast for random access lists. You should always name things in a way agnostic to performance characteristics since those change over time.