JDK 10 RFR of 8182710: File.listRoots() always returns the root of CD drive
brian.burkhalter at oracle.com
Thu Jun 29 18:40:40 UTC 2017
Might as well go whole hog here so for grins I wrote a trivial JMH  micro-benchmark which gave these results:
Warmup: 5 iterations, 2 s each
Measurement: 10 iterations, 3 s each
Version Mode Cnt Score Error Units
JDK 9 avgt 20 0.407 +/- 0.004 us/op
ArrayList avgt 20 505.389 +/- 2.965 us/op
IntStream avgt 20 522.015 +/- 3.040 us/op
BitSet avgt 20 507.290 +/- 1.812 us/op
These were obtained in a Windows 7 VirtualBox VM running on a macOS laptop and should be taken with a grain of salt in general, but they suggest that the ArrayList and BitSet versions are statistically equivalent and the IntStream version only slightly slower. However given that they are all three orders of magnitude slower than the version which does not check existence it hardly matters. Also it does not say a thing about the memory footprint or number of objects created, etc.
On Jun 29, 2017, at 8:11 AM, Tagir Valeev <amaembo at gmail.com> wrote:
> Note that BitSet version removes single capturing lambda and additional stream step (every step creates at least two objects), so the tradeoff is not so obvious. Also it's probably possible that single-element array could be scalarized by JIT.
> With best regards,
> Tagir Valeev.
> On Thu, Jun 29, 2017 at 5:25 PM, Brian Burkhalter<brian.burkhalter at oracle.com> wrote:
> On Jun 29, 2017, at 7:21 AM, Roger Riggs <Roger.Riggs at Oracle.com> wrote:
> > Just interesting how much attention this snippet of code received. :)
More information about the core-libs-dev