From 3e2cbab6ba443daf0abf6e02535fb6cc1df72e04 Mon Sep 17 00:00:00 2001 From: Stefan Bodewig Date: Thu, 4 Mar 2010 13:47:35 +0000 Subject: [PATCH] reduce performance loss in AntClassLoader from 1000% to about 50%. PR 48853 git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@918989 13f79535-47bb-0310-9956-ffa450edef68 --- WHATSNEW | 4 ++++ src/main/org/apache/tools/ant/AntClassLoader.java | 6 ++++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/WHATSNEW b/WHATSNEW index 88c5e7f7b..c6f01b9a0 100644 --- a/WHATSNEW +++ b/WHATSNEW @@ -51,6 +51,10 @@ Fixed bugs: * Broken Pipe issue under Ubuntu Linux Bugzilla Report 48789 + * AntClassLoader in Ant 1.8.0 has been considerably slower than in + 1.7.1 + Bugzilla Report 48853 + Other changes: -------------- diff --git a/src/main/org/apache/tools/ant/AntClassLoader.java b/src/main/org/apache/tools/ant/AntClassLoader.java index 5d6a7568d..7695d2146 100644 --- a/src/main/org/apache/tools/ant/AntClassLoader.java +++ b/src/main/org/apache/tools/ant/AntClassLoader.java @@ -17,6 +17,7 @@ */ package org.apache.tools.ant; +import java.io.BufferedInputStream; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; @@ -1213,8 +1214,9 @@ public class AntClassLoader extends ClassLoader implements SubBuildListener { JarEntry ent = jarFile.getJarEntry(entry); if (ent != null) { // must read the input in order to obtain certificates - is = jarFile.getInputStream(ent); - while (is.read() >= 0); + is = new BufferedInputStream(jarFile.getInputStream(ent)); + byte[] b = new byte[BUFFER_SIZE]; + while (is.read(b, 0, BUFFER_SIZE) >= 0); } return ent == null ? null : ent.getCertificates(); } finally {