It would be great to have an example build.xml that shows the problem.
A number of performance problems were fixed in ant 1.7.0, so it would be nice to squash this one before ant 1.7.1. Peter On 4/24/07, [EMAIL PROTECTED] <[EMAIL PROTECTED]> wrote:
And Mike, I invite you to make some performance tests with your project in our next 1.7.1 release phase ;-) Jan >-----Ursprüngliche Nachricht----- >Von: Matt Benson [mailto:[EMAIL PROTECTED] >Gesendet: Dienstag, 24. April 2007 00:45 >An: Ant Users List; [EMAIL PROTECTED] >Betreff: Re: Ant 1.7 build, high CPU use, possible solution > > >--- Mike McNally <[EMAIL PROTECTED]> wrote: > >> I've been using Ant to build a fairly large web >> application (about >> twelve thousand .class files and various other >> things in a multi-phase >> build) for several years. We've generally been >> pretty happy with Ant >> performance. Recently, however, we noticed that if >> we ran Ant 1.7 on >> the same build configuration the process was very >> noticeably slower, and >> involved long (many seconds) periods of high CPU >> load. Through some >> poking it appeared that the <copy> task was >> incurring the load, which >> seemed odd. >> >> So today I ran a build with JMP (Java Memory >> Profiler) just out of >> curiosity, after having downloaded and built the >> source. At the point >> of the large copy, I noticed that the "contains" >> method on >> java.util.ArrayList was being called very many >> times, and that that was >> resulting in a tremendous number of calls to compare >> Resource instances. >> > >Hi, Mike--the code in Union in Ant 1.7 is similar to >that used to cull dupes from Paths in earlier >versions, except that a Vector was used. I am >perfectly willing to believe it might not be as >clueful as it could be. What would be great is if you >could concoct a harmless example build--maybe a >buildfile that could create whatever structure is >needed--or at least a description of how to create >such a structure, that would allow us to run Ant 1.6.5 >and Ant 1.7 and easily see the altered timings, >attaching to a bug report containing the text of your >email here. > >Thanks, >Matt > >> It seems to me that the code in >> Union.getCollection() is the culprit. >> For reasons unknown to me it builds up its result >> with an obviously n^2 >> loop to avoid duplicates in the result collection. >> By experimentally >> replacing the "ArrayList" with "LinkedHashSet", the >> excessive CPU load >> is completely cured. >> >> I realize that there might be some issue using >> LinkedHashSet, because >> it's from a fairly recent Java version, but the code >> could also work by >> just keeping an explicit java.util.HashSet around in >> parallel with the >> ArrayList being assembled. >> >> >> >> For comparison, a build on an already-built source >> tree (i.e., something >> that just runs through the <copy> task without >> ending up doing anything) >> takes 15 seconds with my "fixed" Ant 1.7, 45 seconds >> without the fix, >> and 15 seconds with Ant 1.6.5. (My machine is a >> fairly modern >> dual-processor P4 with lots of memory, running >> Linux.) >> >> >> (If this is a known and solved problem, my >> apologies; I can't find any >> mention of it on the web.) >> >> -- >> [ I love pre-moistened towelettes ] Mike McNally -- >> [EMAIL PROTECTED] >> >> >--------------------------------------------------------------------- >> To unsubscribe, e-mail: >> [EMAIL PROTECTED] >> For additional commands, e-mail: >> [EMAIL PROTECTED] >> >> > > >__________________________________________________ >Do You Yahoo!? >Tired of spam? Yahoo! Mail has the best spam protection around >http://mail.yahoo.com > >--------------------------------------------------------------------- >To unsubscribe, e-mail: [EMAIL PROTECTED] >For additional commands, e-mail: [EMAIL PROTECTED] > > --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]