On 10/31/2011 5:11 PM, Mike Skells wrote:

(2) Iti is true that this is not a performance gain by code improvement, but it is a performnce gain by specification. The same arguement applies to allowing a Zip Compression of 1 rather than the default. As for the spec, all I have seen is that it should provide the date is available. I am not that fussed if we include this in another section and I that all specification changes need to be considered seperately, as long as it is not lost

I ran you test and I did not see more than 15% difference in the scanning with jav2DosTime includes/excluded. Minimal time in profiler reported as well Running the same time on the same files via the sample improved app that you supplied I see 16% of the time spent in javaToDosTime

Could this be a micro-benchmark issue? (aqnd/or a profiling issue)
In the benchmarks that I have for the full jar app I see usually 5-10% total time reduction in the tests that are CPU bound


I don't think java2DosTime can take 5-10% of the total time of jarring 25k files with a total of 50M+ bytes. A straight N iteration of it should give us some idea whether not it it can take that much of time.

I finally got your patch "worked" on JDK8 for Z2/Z3 case, by commenting out line#112 of FileScanning.java
http://cr.openjdk.java.net/~sherman/mtjar/webrev/src/share/classes/sun/tools/jar/FileScanning.java.html

It appears startPath.relativize() returns something (../) you might not expect to work on.

Observation:

(1) cf6Z2 works, but slower than Z3

@flicker-vm2:/tmp/sherman/test]../mtjar2-linux/bin/java Jar cf6Z2 rt.jar rtjar
Jar TotalTime:3402
Jar TotalTime:3363
Jar TotalTime:3460
Jar TotalTime:3468
Jar TotalTime:3594

(2) Z3 is faster but it creates a 0-length rt.jar, a bug somewhere

[@flicker-vm2:/tmp/sherman/test]../mtjar2-linux/bin/java Jar cf6Z3 rt.jar rtjar
Jar TotalTime:2921
Jar TotalTime:2974
Jar TotalTime:2998
Jar TotalTime:2856
Jar TotalTime:2883

(3) -D such as cf6DZ2 cf6DZ3 does not appear to have any significant/meaningful 
image to the
overall time spent.

(4) it takes about 7xxx ms for the same jar by using a un-touched jdk8 jar
[@flicker-vm2:/tmp/sherman/test]../orig-linux/bin/java Jar cf rt.jar rtjar
Jar TotalTime:7472
Jar TotalTime:7298
Jar TotalTime:7979
Jar TotalTime:7599

(5) Z4, 5 still throws exception as showed below. I'm yet to dig into the code 
to see what went wrong.

[@flicker-vm2:/tmp/sherman/test]../mtjar2-linux/bin/java Jar cf6Z4 rt.jar rtjar
Warmup:rtjar...done
java.lang.NullPointerException
        at 
java.util.zip.ZipChannelWriter.rewriteReserved(ZipChannelWriter.java:211)
        at 
java.util.zip.AbstractRewritingZipWriter.writeMissingHeaderInfo(AbstractRewritingZipWriter.java:44)
        at 
java.util.zip.AbstractZipWriter.startWritingDeflator(AbstractZipWriter.java:611)
        at 
java.util.zip.AbstractZipWriter.writeWithResource(AbstractZipWriter.java:347)
        at java.util.zip.AbstractZipWriter.writeAll(AbstractZipWriter.java:273)
        at sun.tools.jar.Main$ZipOutputLoader2File.call(Main.java:410)
        at sun.tools.jar.Main$ZipOutputLoader2File.call(Main.java:350)
        at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
        at java.util.concurrent.FutureTask.run(FutureTask.java:166)
        at 
java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
        at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
        at java.util.concurrent.FutureTask.run(FutureTask.java:166)
        at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
        at java.lang.Thread.run(Thread.java:722)
java.util.concurrent.ExecutionException: java.lang.NullPointerException
        at java.util.concurrent.FutureTask$Sync.innerGet(FutureTask.java:252)
        at java.util.concurrent.FutureTask.get(FutureTask.java:111)
        at sun.tools.jar.Main.waitFor(Main.java:810)
        at sun.tools.jar.Main.run(Main.java:679)
        at Jar.main(Jar.java:39)
Caused by: java.lang.NullPointerException
        at 
java.util.zip.ZipChannelWriter.rewriteReserved(ZipChannelWriter.java:211)
        at 
java.util.zip.AbstractRewritingZipWriter.writeMissingHeaderInfo(AbstractRewritingZipWriter.java:44)
        at 
java.util.zip.AbstractZipWriter.startWritingDeflator(AbstractZipWriter.java:611)
        at 
java.util.zip.AbstractZipWriter.writeWithResource(AbstractZipWriter.java:347)
        at java.util.zip.AbstractZipWriter.writeAll(AbstractZipWriter.java:273)
        at sun.tools.jar.Main$ZipOutputLoader2File.call(Main.java:410)
        at sun.tools.jar.Main$ZipOutputLoader2File.call(Main.java:350)
        at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
        at java.util.concurrent.FutureTask.run(FutureTask.java:166)
        at 
java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
        at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
        at java.util.concurrent.FutureTask.run(FutureTask.java:166)
        at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
        at java.lang.Thread.run(Thread.java:722)
java.io.IOException: java.lang.InterruptedException
        at java.util.zip.AbstractZipWriter.writeAll(AbstractZipWriter.java:289)
        at sun.tools.jar.Main$ZipOutputLoader2File.call(Main.java:410)
        at sun.tools.jar.Main$ZipOutputLoader2File.call(Main.java:350)
        at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
        at java.util.concurrent.FutureTask.run(FutureTask.java:166)
        at 
java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
        at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
        at java.util.concurrent.FutureTask.run(FutureTask.java:166)
        at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
        at java.lang.Thread.run(Thread.java:722)
Caused by: java.lang.InterruptedException
        at 
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2038)
        at 
java.util.concurrent.ArrayBlockingQueue.take(ArrayBlockingQueue.java:374)
        at 
java.util.zip.DefaultZipResourcePool.acquire(DefaultZipResourcePool.java:50)
        at 
java.util.zip.DefaultZipResourcePool.exchange(DefaultZipResourcePool.java:114)
        at java.util.zip.AbstractZipWriter.writeAll(AbstractZipWriter.java:272)




Reply via email to