Rate index mod first new org index 1109/s -- -24% -38% -48% -52% # moved @mult out loop and used index mod 1464/s 32% -- -18% -31% -36% # Your mod first 1780/s 61% 22% -- -16% -22% # The original long code new 2116/s 91% 45% 19% -- -8% # my version, but inline += * shift for reverse split org 2288/s 106% 56% 29% 8% -- # my original update s/(\d+)-//; and split