4 ms·
Yes your example is bad. If JIT inlines through, the code is trivially dead and can be removed. So yes, please use proper bench harness (JMH).
by vitalyd 11y ago
Yes your example is bad. If JIT inlines through, the code is trivially dead and can be removed. So yes, please use proper bench harness (JMH).
- potatosareok 11y agoYa 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. edit: https://gist.github.com/anonymous/ed0d8f4a5c6553fe8435 https://gist.github.com/anonymous/ed0d8f4a5c6553fe8435 Is there some way in this example it could not actually run the code here?
- vitalyd 11y agoWell, 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.