Ya I thought it might mark it as dead but even if I append the result to something like a List and print the list at the end (so it can't just not run the code?), Stream wins. Anyway I'm off to work for today, maybe I'll post in evening.
Well, you're not really testing for loops since 5there are other artifacts here:
1) forEach driver method is receiving multiple types, it's not monomorphic
2) you may be hitting OSR compilations
3) for loop may hit range checks on each get()
4) for loop version warms the cache for the stream version and this benchmark is mem ref heavy
So, please try to use JMH to get more accurate picture. And, as mentioned, this isn't really testing for loop vs streams.