Hi Alan,
Here is the updated webrev with
(1) to move JarFile.getRealName into JarEntry
(2) to hide ZipFile.entryNameStream() from the public
(3) to reword the JarFile.versionedStream() to scope the "latest versined"
http://cr.openjdk.java.net/~sherman/8189611/webrev
thanks,
Sherman
On 11/20/17, 7:27 AM, Alan Bateman wrote:
On 17/11/2017 16:53, Xueming Shen wrote:
:
3. Is ZipFile.entryNameStream really needed? Just asking because
zf.stream().map(ZipEntry::getName) is possible today.
It's not a "must" for sure. The motivation behind this is that my
observation of most normal use scenario
inside JDK is that only the "name" info is interested/collect/used.
The use pattern usually is
zf.stream().map(ZipEntry::getName)
same for the old Enumeration case, only the "name" is used and the
"entry" object is thrown away mostly.
Other than the memory consumption (showed in those two snapshots),
it's also relatively costly to create
the ZipEntry especially its "esxdostime" calculation. The jmh numbers
from a simple benchmark test
suggests the entryNameStream is about 15-20% faster. So, the only
reason it's there is for better
performance.
I can believe that it is faster but it does loose the ability to
filter (it requires checking for a trailing "/" to filter out
directories for example). I guess I don't object to adding this but it
feels like it an opportunity beyond JDK-8189611.
-Alan