RFR: JDK-8150496,(zipfs) Fix performance issues in zip-fs
Peter Levart
peter.levart at gmail.com
Wed May 4 07:50:13 UTC 2016
Hi Aleksey,
On 05/03/2016 02:39 PM, Aleksey Shipilev wrote:
> *) There is ever-so-subtle difference in doing either:
>
> 171 byte[] tmp = new byte[path.length + 1];
> 172 System.arraycopy(path, 0, tmp, 1, path.length);
> 173 tmp[0] = '/';
>
> ...or:
>
> 1083 byte[] name = new byte[nlen + 1];
> 1084 name[0] = '/';
> 1085 System.arraycopy(cen, pos + CENHDR, name, 1, nlen);
>
> Excess op between allocation and arraycopy breaks zeroing elimination,
> see e.g.:
> http://cr.openjdk.java.net/~shade/scratch/ZeroingFirstBench.java
...so when allocation of array is immediately followed with arraycopy
where the newly allocated array is the target, only the part of the
array that is not overwritten by arraycopy will be zeroed? Because not
the whole array is overwritten in your example/benchmark. That's good to
know.
Regards, Peter
More information about the core-libs-dev
mailing list