On my system, I get a different result:
Rate split_pos grep_split substr_map substr_loop unpack
split_pos 4596/s -- -53% -71% -79% -82%
grep_split 9843/s 114% -- -37% -54% -61%
substr_map 15674/s 241% 59% -- -27% -38%
substr_loop 21459/s 367% 118% 37% -- -15%
unpack 25381/s 452% 158% 62% 18% --
Your performance characteristics depend on all sorts of things relating to your CPU, its cache, bus speed, memory, etc.
But as far as ways to make it faster, you might want to use an idiomatic for loop instead of the C-style loop.