[email protected] wrote:
Hi,
I have an update of the optimisations to date

In summary jar can be 3 to 4 times faster and becomes CPU bound on all 4 cores of my dev system

the results are as a CSV below
I have included tests of the 1.6 and 1.7 code and runtime for comparison

the optimisation that I have completed are 1. increase output buffer size 2. add an option (D) to omit file dates (date loading was a significant overhead before (4), less so afterwards, but still measurable improvements and may not be useful in some circumstances (e.g. my use cases) 3. pipeline the scanning for the files with the output, queuing file info via a BlockingQueue
4. rewrite the scanning to use the FileVisitor
5. temporary option (Zn) to specify the parallel option used
Z0 runs the load of the file in a single thread
Z1 runs parallel load of small files into memory caches, and runs the load of the zip file in another thread
Z2 uses a (mostly) parallel version of Zip/JarOutputStream called Zip/JarWriter
6 decreased the calls to BufferedOutputStream.write(int) (in Z2 mode) to limit the overheads of synchronisation
7. modified some Jar internal data structures
8 eliminated double reading of a file in STORED mode for 'small' files (was once for CRC and again for data)
9 probably a few other tweaks that I have forgotten

I have only looked at the create path. I have mod modified the update or extract paths
Mike - the results look very good. Are you at the point yet where you have a patch to discuss and review?

-Alan.

Reply via email to