>>16
Having compact data in the cache is better than "loose" code in there, especially if that long line of code is big enough to make a loop fall out of the cache. A plain call+push imm8 is 7 bytes; even if you stored that array as 4-byte ints (thus wasting 3/4 of the space in that example) you're still getting an improvement: 7n vs 4n + loop code overhead. Store as single bytes and you get even better density, it's now 7n vs 1n + overhead.
"instructions" and "data" are the same to the memory, don't think instruction fetches are free.