- changed format of for loops to remove method calls - removed other method calls - made access to ZipEntry.DEFLATED/STORED more explicit to stop compiler whining - changed one javadoc
On large file sets the VM should work a little less (a few method calls/entry) -> minor performance improvement. Kev
Index: ZipEntry.java =================================================================== RCS file: /home/cvspublic/ant/src/main/org/apache/tools/zip/ZipEntry.java,v retrieving revision 1.21 diff -u -r1.21 ZipEntry.java --- ZipEntry.java 4 Dec 2004 00:03:50 -0000 1.21 +++ ZipEntry.java 15 Dec 2004 04:20:01 -0000 @@ -20,8 +20,6 @@ import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.util.Vector; -import java.util.Date; -import java.util.Calendar; import java.util.zip.ZipException; /** @@ -259,7 +257,7 @@ public void addExtraField(ZipExtraField ze) { ZipShort type = ze.getHeaderId(); boolean done = false; - for (int i = 0; !done && i < extraFields.size(); i++) { + for (int i = 0, fieldsSize = extraFields.size(); !done && i < fieldsSize; i++) { if (((ZipExtraField) extraFields.elementAt(i)).getHeaderId().equals(type)) { extraFields.setElementAt(ze, i); done = true; @@ -278,7 +276,7 @@ */ public void removeExtraField(ZipShort type) { boolean done = false; - for (int i = 0; !done && i < extraFields.size(); i++) { + for (int i = 0, fieldsSize = extraFields.size(); !done && i < fieldsSize; i++) { if (((ZipExtraField) extraFields.elementAt(i)).getHeaderId().equals(type)) { extraFields.removeElementAt(i); done = true; Index: ZipOutputStream.java =================================================================== RCS file: /home/cvspublic/ant/src/main/org/apache/tools/zip/ZipOutputStream.java,v retrieving revision 1.30 diff -u -r1.30 ZipOutputStream.java --- ZipOutputStream.java 4 Dec 2004 00:03:50 -0000 1.30 +++ ZipOutputStream.java 15 Dec 2004 04:20:01 -0000 @@ -89,7 +89,7 @@ * * @since 1.1 */ - private int method = DEFLATED; + private int method = java.util.zip.ZipEntry.DEFLATED; /** * List of ZipEntries written so far. @@ -209,14 +209,14 @@ * * @since 1.1 */ - public static final int DEFLATED = ZipEntry.DEFLATED; + public static final int DEFLATED = java.util.zip.ZipEntry.DEFLATED; /** - * Compression method for deflated entries. + * Compression method for stored entries. * * @since 1.1 */ - public static final int STORED = ZipEntry.STORED; + public static final int STORED = java.util.zip.ZipEntry.STORED; /** * Creates a new ZIP OutputStream filtering the underlying stream. @@ -299,7 +299,7 @@ public void finish() throws IOException { closeEntry(); cdOffset = written; - for (int i = 0; i < entries.size(); i++) { + for (int i = 0, entriesSize = entries.size(); i < entriesSize; i++) { writeCentralFileHeader((ZipEntry) entries.elementAt(i)); } cdLength = written - cdOffset; @@ -561,9 +561,12 @@ writeOut(LFH_SIG); written += 4; + //store method in local variable to prevent multiple method calls + final int zipMethod = ze.getMethod(); + // version needed to extract // general purpose bit flag - if (ze.getMethod() == DEFLATED && raf == null) { + if (zipMethod == DEFLATED && raf == null) { // requires version 2 as we are going to store length info // in the data descriptor writeOut(ZipShort.getBytes(20)); @@ -577,7 +580,7 @@ written += 4; // compression method - writeOut(ZipShort.getBytes(ze.getMethod())); + writeOut(ZipShort.getBytes(zipMethod)); written += 2; // last mod. time and date @@ -588,7 +591,7 @@ // compressed length // uncompressed length localDataStart = written; - if (ze.getMethod() == DEFLATED || raf != null) { + if (zipMethod == DEFLATED || raf != null) { writeOut(LZERO); writeOut(LZERO); writeOut(LZERO);
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]