Miscellaneous improvements to "jar".
Xueming Shen
Xueming.Shen at Sun.COM
Fri Jun 26 16:45:34 UTC 2009
Ulf Zibis wrote:
>
> Motivation:
> Xueming states:
> *"dat" based uses less disk space, but it has larger startup time,
> reading an additional "big" dat file during class loading/initializing
> actually takes much longer time than I expected (I hit the extreme
> when I worked on the EUC_TW, which I make the size only 30% of the
> existing one, but startup is a disaster regression, ...
> *
> If loading x bytes from dat file via getResourceAsStream() takes much
> longer time than loading x+30% bytes from class file, processing the
> UTF-8 conversion, instantiating and initializing additional Class
> objects, I imperatively presume, that there must be a big chance for
> significantly improving read speed from uncompressed jar file (here
> charsets.jar), by using direct channels or how ever. I presume,
> enhancing reading from jar files would be a big fish in performance
> gain for the whole JDK, as it is very common task in JVM's daily work.
>
>
Ulf, the "jar reading" part of the "class loading/initializing" of
charsets.jar (and most of the "core lib" jars) is not via
java.util.jar/zip interface,
there is a native level interface for the vm to access those jar files,
so adding a nio buffer interface is not going to help startup of jdk/jre
itself.
Martin's estimate of 10%-20% gain indeed is very close, I got less than
5%-8% (for jaring) gain from my prototype implementation. As I
said it's still something worthing doing, especially it makes the life
easier when work together with other nio/channel APIs.
Sherman
More information about the core-libs-dev
mailing list