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