You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cactus-dev@jakarta.apache.org by Magnus Grimsell <ma...@idainfront.se> on 2008/08/19 09:51:09 UTC

cactus performance

Hi all,

We have been working with improving the performance of our build loop the last week.
When profiling we realized that 37% of a complete build is spent in CactifyWarTask.addCactusJars(). Even more when building separate targets. 

To solve this we made a patch where you can tell CactifyWarTask that the cactus jars is already present. Do you think this is a good approach? 
I've attached the patch and the profile report so you guys can have look at it before I commit anything.

Profile report:
Call tree (all threads together)

+--------------------------------------------------------------------------------------------------+------------------+
|                                               Name                                               |    Time (ms)     |
+--------------------------------------------------------------------------------------------------+------------------+
|  +---<All threads>                                                                               |  375�829  100 %  |
|    |                                                                                             |                  |
|    +---org.apache.tools.ant.launch.Launcher.main(String[])                                       |  375�016  100 %  |
|    | |                                                                                           |                  |
|    | +---iipax.embedded.ant.Application.execute()                                                |   235�536  63 %  |
|    | | |                                                                                         |                  |
|    | | +---iipax.embedded.ant.application.TestApplication.makeEarTestable(File)                  |   166�597  44 %  |
|    | | | |                                                                                       |                  |
|    | | | +---iipax.embedded.ant.application.TestApplication.cactifyEar(File, File)               |   164�644  44 %  |
|    | | | | |                                                                                     |                  |
|    | | | | +---org.apache.cactus.integration.ant.CactifyEarTask.execute()                        |   164�644  44 %  |
|    | | | |   |                                                                                   |                  |
|    | | | |   +---org.apache.cactus.integration.ant.CactifyEarTask.createCactusWar()              |   153�834  41 %  |
|    | | | |   | |                                                                                 |                  |
|    | | | |   | +---org.apache.cactus.integration.ant.CactifyWarTask.execute()                    |   141�147  38 %  |
|    | | | |   | | |                                                                               |                  |
|    | | | |   | | +---org.apache.cactus.integration.ant.CactifyWarTask.addCactusJars()            |   138�312  37 %  |
|    | | | |   | | |                                                                               |                  |
|    | | | |   | | +---org.apache.tools.ant.taskdefs.Zip.execute()                                 |      2�100  1 %  |
|    | | | |   | | |                                                                               |                  |
|    | | | |   | | +---org.apache.cactus.integration.ant.CactifyWarTask.getOriginalWebXml()        |        718  0 %  |
|    | | | |   | | |                                                                               |                  |
|    | | | |   | | +---org.apache.cactus.integration.ant.CactifyWarTask.cactifyWebXml(WebXml)      |         15  0 %  |
|    | | | |   | |                                                                                 |                  |
|    | | | |   | +---org.apache.cactus.integration.ant.CactifyEarTask.addEjbReferencesToWar(File)  |     12�687  3 %  |
|    | | | |   |                                                                                   |                  |
|    | | | |   +---org.apache.tools.ant.taskdefs.Zip.execute()                                     |      9�184  2 %  |
|    | | | |   |                                                                                   |                  |
|    | | | |   +---org.apache.cactus.integration.ant.CactifyEarTask.getOriginalApplicationXml()    |      1�625  0 %  |
|    | | | |                                                                                       |                  |
|    | | | +---iipax.embedded.ant.application.TestApplication.createTestWar()                      |      1�921  1 %  |
|    | | | |                                                                                       |                  |
|    | | | +---java.io.File.delete()                                                               |         31  0 %  |
|    | | |                                                                                         |                  |
|    | | +---iipax.embedded.ant.Application.buildPP(ProductPart, String)                           |     24�335  6 %  |
|    | | |                                                                                         |                  |
|    | | +---iipax.embedded.ant.application.Compiler.compile()                                     |     23�609  6 %  |
|    | | |                                                                                         |                  |
|    | | +---iipax.embedded.ant.application.PPFileAssembler.addPP(ProductPart)                     |      5�562  1 %  |
|    | | |                                                                                         |                  |
|    | | +---iipax.embedded.ant.application.EarUnit.addThirdParties(Collection)                    |      3�546  1 %  |
|    | | |                                                                                         |                  |
|    | | +---iipax.embedded.ant.application.EarUnit.addPPs(Collection)                             |      2�906  1 %  |
|    | | |                                                                                         |                  |
|    | | +---iipax.embedded.ant.application.CrossCut.addPP(ProductPart, Task)                      |      2�562  1 %  |
|    | | |                                                                                         |                  |
|    | | +---iipax.embedded.ant.application.WebStartApplication.create()                           |      2�056  1 %  |
|    | | |                                                                                         |                  |
|    | | +---iipax.embedded.ant.application.EjbRefAdder.modify()                                   |      1�484  0 %  |
|    | | |                                                                                         |                  |
|    | | +---iipax.embedded.ant.application.ConfigurationWriter.addPP(ProductPart)                 |      1�015  0 %  |
|    | | |                                                                                         |                  |
|    | | +---iipax.embedded.ant.application.SqlWriter.close()                                      |        953  0 %  |
|    | | |                                                                                         |                  |
|    | | +---iipax.embedded.ant.Application.createInstall()                                        |        625  0 %  |
|    | | |                                                                                         |                  |
|    | | +---iipax.embedded.ant.application.CrossCut.close()                                       |        234  0 %  |
|    | | |                                                                                         |                  |
|    | | +---iipax.embedded.ant.application.EarUnit.close()                                        |         31  0 %  |
|    | | |                                                                                         |                  |
|    | | +---iipax.embedded.ant.Application.createAppDirs()                                        |         15  0 %  |
|    | |                                                                                           |                  |
|    | +---org.apache.tools.zip.ZipOutputStream.write(byte[], int, int)                            |     22�554  6 %  |
|    | |                                                                                           |                  |
|    | +---org.apache.tools.tar.TarOutputStream.write(byte[], int, int)                            |     22�437  6 %  |
|    | |                                                                                           |                  |
|    | +---com.puppycrawl.tools.checkstyle.CheckStyleTask.execute()                                |     19�671  5 %  |
|    | |                                                                                           |                  |
|    | +---org.apache.tools.zip.ZipFile$BoundedInputStream.read(byte[], int, int)                  |     10�895  3 %  |
|    | |                                                                                           |                  |
|    | +---iipax.embedded.ant.ApiClosure.execute()                                                 |      6�921  2 %  |
|    | |                                                                                           |                  |
|    | +---org.apache.tools.zip.ZipOutputStream.write(byte[], int, int)                            |      3�311  1 %  |
|    | |                                                                                           |                  |
|    | +---org.apache.tools.zip.ZipOutputStream.putNextEntry(ZipEntry)                             |      3�203  1 %  |
|    | |                                                                                           |                  |
|    | +---org.apache.tools.zip.ZipOutputStream.write(byte[], int, int)                            |      2�920  1 %  |
|    | |                                                                                           |                  |
|    | +---org.apache.tools.zip.ZipFile.<init>(File, String)                                       |      2�048  1 %  |
|    | |                                                                                           |                  |
|    | +---org.apache.tools.zip.ZipOutputStream.close()                                            |      1�217  0 %  |
|    | |                                                                                           |                  |
|    | +---org.apache.tools.zip.ZipFile.getInputStream(ZipEntry)                                   |        484  0 %  |
|    | |                                                                                           |                  |
|    | +---org.apache.tools.zip.ZipOutputStream.putNextEntry(ZipEntry)                             |        469  0 %  |
|    | |                                                                                           |                  |
|    | +---org.apache.tools.zip.ZipOutputStream.write(byte[], int, int)                            |        265  0 %  |
|    | |                                                                                           |                  |
|    | +---org.apache.tools.zip.ZipOutputStream.write(byte[], int, int)                            |        250  0 %  |
|    | |                                                                                           |                  |
|    | +---iipax.embedded.ant.ProductPartContainer.addConfiguredComponent(Component)               |        203  0 %  |
|    | |                                                                                           |                  |
|    | +---org.apache.tools.zip.ZipOutputStream.close()                                            |        184  0 %  |
|    | |                                                                                           |                  |
|    | +---org.apache.xerces.jaxp.SAXParserFactoryImpl.newSAXParser()                              |        171  0 %  |
|    | |                                                                                           |                  |
|    | +---org.apache.tools.zip.ZipFile$BoundedInputStream.read(byte[], int, int)                  |        149  0 %  |
|    | |                                                                                           |                  |
|    | +---org.apache.tools.zip.ZipOutputStream.putNextEntry(ZipEntry)                             |        129  0 %  |
|    | |                                                                                           |                  |
|    | +---org.apache.tools.tar.TarOutputStream.putNextEntry(TarEntry)                             |        125  0 %  |
|    | |                                                                                           |                  |
|    | +---org.apache.tools.tar.TarOutputStream.closeEntry()                                       |         78  0 %  |
|    | |                                                                                           |                  |
|    | +---org.apache.xerces.parsers.AbstractSAXParser.parse(InputSource)                          |         62  0 %  |
|    | |                                                                                           |                  |
|    | +---org.apache.xerces.jaxp.SAXParserFactoryImpl.newSAXParser()                              |         31  0 %  |
|    | |                                                                                           |                  |
|    | +---org.apache.xerces.parsers.AbstractSAXParser.parse(InputSource)                          |         31  0 %  |
|    | |                                                                                           |                  |
|    | +---org.apache.xerces.parsers.AbstractSAXParser.parse(InputSource)                          |         31  0 %  |
|    | |                                                                                           |                  |
|    | +---org.apache.tools.zip.ZipOutputStream.close()                                            |         20  0 %  |
|    | |                                                                                           |                  |
|    | +---org.apache.tools.tar.TarOutputStream.<init>(OutputStream)                               |         15  0 %  |
|    | |                                                                                           |                  |
|    | +---org.apache.tools.tar.TarEntry.<init>(String)                                            |         15  0 %  |
|    | |                                                                                           |                  |
|    | +---org.apache.tools.zip.ZipOutputStream.putNextEntry(ZipEntry)                             |         15  0 %  |
|    | |                                                                                           |                  |
|    | +---org.apache.tools.zip.ZipOutputStream.putNextEntry(ZipEntry)                             |         15  0 %  |
|    | |                                                                                           |                  |
|    | +---org.apache.tools.zip.ZipEntry.<init>(String)                                            |         15  0 %  |
|    | |                                                                                           |                  |
|    | +---com.cenqua.clover.tasks.CloverTask.<clinit>()                                           |         15  0 %  |
|    | |                                                                                           |                  |
|    | +---org.apache.xerces.jaxp.SAXParserFactoryImpl.newSAXParser()                              |         15  0 %  |
|    | |                                                                                           |                  |
|    | +---org.apache.xerces.jaxp.SAXParserFactoryImpl.newSAXParser()                              |         15  0 %  |
|    |                                                                                             |                  |
|    +---java.lang.ref.Finalizer$FinalizerThread.run()                                             |        437  0 %  |
|    |                                                                                             |                  |
|    +---java.lang.ref.Reference$ReferenceHandler.run()                                            |        328  0 %  |
|    |                                                                                             |                  |
|    +---java.lang.Thread.run()                                                                    |         31  0 %  |
|    |                                                                                             |                  |
|    +---java.lang.ClassLoader.loadClassInternal(String)                                           |         15  0 %  |
+--------------------------------------------------------------------------------------------------+------------------+

Generated by __PRODUCT_NAME__  2008-aug-19 09:25:22



RE: cactus performance

Posted by Magnus Grimsell <ma...@idainfront.se>.
Strange. Maybe attachements aren't allowed on this mailing list.
I'll create a Jira issue and attach the patch there.

/Magnus

>-----Original Message-----
>From: Petar Tahchiev [mailto:paranoiabla@gmail.com]
>Sent: Tuesday, August 19, 2008 10:20 PM
>To: Cactus Developers List
>Cc: Lars Törner
>Subject: Re: cactus performance
>
>HI Magnus,
>
>I have also noticed that issue, but only with extremely large
>WAR/EAR files. Currently the CactifyWar task only checks
>to see if the given JARs are present and logs a message.
>The problem comes when the archive grows very big - then
>the cactifywar task has to look all over it to check if the requested
>JARs
>are present.
>
>I think it is reasonable to have a parameter for the task and instruct
>it to skip the search when this parameter is set.
>
>I don't see your patch attached. Maybe you forgot to attach it?
>
>
>Thanks for the point.
>
>2008/8/19 Magnus Grimsell <ma...@idainfront.se>
>
>> Hi all,
>>
>> We have been working with improving the performance of our build loop
>the
>> last week.
>> When profiling we realized that 37% of a complete build is spent in
>> CactifyWarTask.addCactusJars(). Even more when building separate
>targets.
>>
>> To solve this we made a patch where you can tell CactifyWarTask that
>the
>> cactus jars is already present. Do you think this is a good approach?
>> I've attached the patch and the profile report so you guys can have
>look at
>> it before I commit anything.
>>
>> Profile report:
>> Call tree (all threads together)
>>
>>
>> +---------------------------------------------------------------------
>-----------------------------+------------------+
>> |                                               Name
>>                         |    Time (ms)     |
>>
>> +---------------------------------------------------------------------
>-----------------------------+------------------+
>> |  +---<All threads>
>>                         |  375 829  100 %  |
>> |    |
>>                         |                  |
>> |    +---org.apache.tools.ant.launch.Launcher.main(String[])
>>                         |  375 016  100 %  |
>> |    | |
>>                         |                  |
>> |    | +---iipax.embedded.ant.Application.execute()
>>                        |   235 536  63 %  |
>> |    | | |
>>                         |                  |
>> |    | |
>> +---
>iipax.embedded.ant.application.TestApplication.makeEarTestable(File)
>>              |   166 597  44 %  |
>> |    | | | |
>>                         |                  |
>> |    | | |
>> +---iipax.embedded.ant.application.TestApplication.cactifyEar(File,
>File)
>>             |   164 644  44 %  |
>> |    | | | | |
>>                         |                  |
>> |    | | | | +---
>org.apache.cactus.integration.ant.CactifyEarTask.execute()
>>                        |   164 644  44 %  |
>> |    | | | |   |
>>                         |                  |
>> |    | | | |
>> +---org.apache.cactus.integration.ant.CactifyEarTask.createCactusWar()
>>        |   153 834  41 %  |
>> |    | | | |   | |
>>                         |                  |
>> |    | | | |   |
>> +---org.apache.cactus.integration.ant.CactifyWarTask.execute()
>>      |   141 147  38 %  |
>> |    | | | |   | | |
>>                         |                  |
>> |    | | | |   | |
>> +---org.apache.cactus.integration.ant.CactifyWarTask.addCactusJars()
>>    |   138 312  37 %  |
>> |    | | | |   | | |
>>                         |                  |
>> |    | | | |   | | +---org.apache.tools.ant.taskdefs.Zip.execute()
>>                         |      2 100  1 %  |
>> |    | | | |   | | |
>>                         |                  |
>> |    | | | |   | |
>> +---
>org.apache.cactus.integration.ant.CactifyWarTask.getOriginalWebXml()
>>    |        718  0 %  |
>> |    | | | |   | | |
>>                         |                  |
>> |    | | | |   | |
>> +---
>org.apache.cactus.integration.ant.CactifyWarTask.cactifyWebXml(WebXml)
>>    |         15  0 %  |
>> |    | | | |   | |
>>                         |                  |
>> |    | | | |   |
>> +---
>org.apache.cactus.integration.ant.CactifyEarTask.addEjbReferencesToWar(F
>ile)
>>  |     12 687  3 %  |
>> |    | | | |   |
>>                         |                  |
>> |    | | | |   +---org.apache.tools.ant.taskdefs.Zip.execute()
>>                         |      9 184  2 %  |
>> |    | | | |   |
>>                         |                  |
>> |    | | | |
>> +---
>org.apache.cactus.integration.ant.CactifyEarTask.getOriginalApplicationX
>ml()
>>    |      1 625  0 %  |
>> |    | | | |
>>                         |                  |
>> |    | | |
>> +---iipax.embedded.ant.application.TestApplication.createTestWar()
>>            |      1 921  1 %  |
>> |    | | | |
>>                         |                  |
>> |    | | | +---java.io.File.delete()
>>                         |         31  0 %  |
>> |    | | |
>>                         |                  |
>> |    | | +---iipax.embedded.ant.Application.buildPP(ProductPart,
>String)
>>                         |     24 335  6 %  |
>> |    | | |
>>                         |                  |
>> |    | | +---iipax.embedded.ant.application.Compiler.compile()
>>                         |     23 609  6 %  |
>> |    | | |
>>                         |                  |
>> |    | |
>> +---iipax.embedded.ant.application.PPFileAssembler.addPP(ProductPart)
>>               |      5 562  1 %  |
>> |    | | |
>>                         |                  |
>> |    | |
>> +---iipax.embedded.ant.application.EarUnit.addThirdParties(Collection)
>>              |      3 546  1 %  |
>> |    | | |
>>                         |                  |
>> |    | | +---iipax.embedded.ant.application.EarUnit.addPPs(Collection)
>>                         |      2 906  1 %  |
>> |    | | |
>>                         |                  |
>> |    | | +---
>iipax.embedded.ant.application.CrossCut.addPP(ProductPart,
>> Task)                      |      2 562  1 %  |
>> |    | | |
>>                         |                  |
>> |    | | +---
>iipax.embedded.ant.application.WebStartApplication.create()
>>                         |      2 056  1 %  |
>> |    | | |
>>                         |                  |
>> |    | | +---iipax.embedded.ant.application.EjbRefAdder.modify()
>>                         |      1 484  0 %  |
>> |    | | |
>>                         |                  |
>> |    | |
>> +---
>iipax.embedded.ant.application.ConfigurationWriter.addPP(ProductPart)
>>               |      1 015  0 %  |
>> |    | | |
>>                         |                  |
>> |    | | +---iipax.embedded.ant.application.SqlWriter.close()
>>                        |        953  0 %  |
>> |    | | |
>>                         |                  |
>> |    | | +---iipax.embedded.ant.Application.createInstall()
>>                        |        625  0 %  |
>> |    | | |
>>                         |                  |
>> |    | | +---iipax.embedded.ant.application.CrossCut.close()
>>                         |        234  0 %  |
>> |    | | |
>>                         |                  |
>> |    | | +---iipax.embedded.ant.application.EarUnit.close()
>>                        |         31  0 %  |
>> |    | | |
>>                         |                  |
>> |    | | +---iipax.embedded.ant.Application.createAppDirs()
>>                        |         15  0 %  |
>> |    | |
>>                         |                  |
>> |    | +---org.apache.tools.zip.ZipOutputStream.write(byte[], int,
>int)
>>                        |     22 554  6 %  |
>> |    | |
>>                         |                  |
>> |    | +---org.apache.tools.tar.TarOutputStream.write(byte[], int,
>int)
>>                        |     22 437  6 %  |
>> |    | |
>>                         |                  |
>> |    | +---com.puppycrawl.tools.checkstyle.CheckStyleTask.execute()
>>                        |     19 671  5 %  |
>> |    | |
>>                         |                  |
>> |    | +---
>org.apache.tools.zip.ZipFile$BoundedInputStream.read(byte[],
>> int, int)                  |     10 895  3 %  |
>> |    | |
>>                         |                  |
>> |    | +---iipax.embedded.ant.ApiClosure.execute()
>>                         |      6 921  2 %  |
>> |    | |
>>                         |                  |
>> |    | +---org.apache.tools.zip.ZipOutputStream.write(byte[], int,
>int)
>>                        |      3 311  1 %  |
>> |    | |
>>                         |                  |
>> |    | +---org.apache.tools.zip.ZipOutputStream.putNextEntry(ZipEntry)
>>                         |      3 203  1 %  |
>> |    | |
>>                         |                  |
>> |    | +---org.apache.tools.zip.ZipOutputStream.write(byte[], int,
>int)
>>                        |      2 920  1 %  |
>> |    | |
>>                         |                  |
>> |    | +---org.apache.tools.zip.ZipFile.<init>(File, String)
>>                         |      2 048  1 %  |
>> |    | |
>>                         |                  |
>> |    | +---org.apache.tools.zip.ZipOutputStream.close()
>>                        |      1 217  0 %  |
>> |    | |
>>                         |                  |
>> |    | +---org.apache.tools.zip.ZipFile.getInputStream(ZipEntry)
>>                         |        484  0 %  |
>> |    | |
>>                         |                  |
>> |    | +---org.apache.tools.zip.ZipOutputStream.putNextEntry(ZipEntry)
>>                         |        469  0 %  |
>> |    | |
>>                         |                  |
>> |    | +---org.apache.tools.zip.ZipOutputStream.write(byte[], int,
>int)
>>                        |        265  0 %  |
>> |    | |
>>                         |                  |
>> |    | +---org.apache.tools.zip.ZipOutputStream.write(byte[], int,
>int)
>>                        |        250  0 %  |
>> |    | |
>>                         |                  |
>> |    |
>> +---
>iipax.embedded.ant.ProductPartContainer.addConfiguredComponent(Component
>)
>>               |        203  0 %  |
>> |    | |
>>                         |                  |
>> |    | +---org.apache.tools.zip.ZipOutputStream.close()
>>                        |        184  0 %  |
>> |    | |
>>                         |                  |
>> |    | +---org.apache.xerces.jaxp.SAXParserFactoryImpl.newSAXParser()
>>                        |        171  0 %  |
>> |    | |
>>                         |                  |
>> |    | +---
>org.apache.tools.zip.ZipFile$BoundedInputStream.read(byte[],
>> int, int)                  |        149  0 %  |
>> |    | |
>>                         |                  |
>> |    | +---org.apache.tools.zip.ZipOutputStream.putNextEntry(ZipEntry)
>>                         |        129  0 %  |
>> |    | |
>>                         |                  |
>> |    | +---org.apache.tools.tar.TarOutputStream.putNextEntry(TarEntry)
>>                         |        125  0 %  |
>> |    | |
>>                         |                  |
>> |    | +---org.apache.tools.tar.TarOutputStream.closeEntry()
>>                         |         78  0 %  |
>> |    | |
>>                         |                  |
>> |    | +---
>org.apache.xerces.parsers.AbstractSAXParser.parse(InputSource)
>>                        |         62  0 %  |
>> |    | |
>>                         |                  |
>> |    | +---org.apache.xerces.jaxp.SAXParserFactoryImpl.newSAXParser()
>>                        |         31  0 %  |
>> |    | |
>>                         |                  |
>> |    | +---
>org.apache.xerces.parsers.AbstractSAXParser.parse(InputSource)
>>                        |         31  0 %  |
>> |    | |
>>                         |                  |
>> |    | +---
>org.apache.xerces.parsers.AbstractSAXParser.parse(InputSource)
>>                        |         31  0 %  |
>> |    | |
>>                         |                  |
>> |    | +---org.apache.tools.zip.ZipOutputStream.close()
>>                        |         20  0 %  |
>> |    | |
>>                         |                  |
>> |    | +---org.apache.tools.tar.TarOutputStream.<init>(OutputStream)
>>                         |         15  0 %  |
>> |    | |
>>                         |                  |
>> |    | +---org.apache.tools.tar.TarEntry.<init>(String)
>>                        |         15  0 %  |
>> |    | |
>>                         |                  |
>> |    | +---org.apache.tools.zip.ZipOutputStream.putNextEntry(ZipEntry)
>>                         |         15  0 %  |
>> |    | |
>>                         |                  |
>> |    | +---org.apache.tools.zip.ZipOutputStream.putNextEntry(ZipEntry)
>>                         |         15  0 %  |
>> |    | |
>>                         |                  |
>> |    | +---org.apache.tools.zip.ZipEntry.<init>(String)
>>                        |         15  0 %  |
>> |    | |
>>                         |                  |
>> |    | +---com.cenqua.clover.tasks.CloverTask.<clinit>()
>>                         |         15  0 %  |
>> |    | |
>>                         |                  |
>> |    | +---org.apache.xerces.jaxp.SAXParserFactoryImpl.newSAXParser()
>>                        |         15  0 %  |
>> |    | |
>>                         |                  |
>> |    | +---org.apache.xerces.jaxp.SAXParserFactoryImpl.newSAXParser()
>>                        |         15  0 %  |
>> |    |
>>                         |                  |
>> |    +---java.lang.ref.Finalizer$FinalizerThread.run()
>>                         |        437  0 %  |
>> |    |
>>                         |                  |
>> |    +---java.lang.ref.Reference$ReferenceHandler.run()
>>                        |        328  0 %  |
>> |    |
>>                         |                  |
>> |    +---java.lang.Thread.run()
>>                        |         31  0 %  |
>> |    |
>>                         |                  |
>> |    +---java.lang.ClassLoader.loadClassInternal(String)
>>                         |         15  0 %  |
>>
>> +---------------------------------------------------------------------
>-----------------------------+------------------+
>>
>> Generated by __PRODUCT_NAME__  2008-aug-19 09:25:22
>>
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: cactus-dev-unsubscribe@jakarta.apache.org
>> For additional commands, e-mail: cactus-dev-help@jakarta.apache.org
>>
>
>
>
>--
>Regards, Petar!
>Karlovo, Bulgaria.
>- - - - - - - -
>| Author @ Manning Publications.
>| Technical Consultant @ HP
>| BGJUG-Bulgarian Java User Group Leader.
>| Apache Jakarta PMC member.
>| Jakarta Cactus Lead Developer.
>| Blogger: http://weblogs.java.net/blog/paranoiabla/
>- - - - - - - -
>Public PGP Key at:
>https://keyserver1.pgp.com/vkd/DownloadKey.event?keyid=0x19658550C311061
>1
>Key Fingerprint: A369 A7EE 61BC 93A3 CDFF 55A5 1965 8550 C311 0611

---------------------------------------------------------------------
To unsubscribe, e-mail: cactus-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: cactus-dev-help@jakarta.apache.org


Re: cactus performance

Posted by Petar Tahchiev <pa...@gmail.com>.
HI Magnus,

I have also noticed that issue, but only with extremely large
WAR/EAR files. Currently the CactifyWar task only checks
to see if the given JARs are present and logs a message.
The problem comes when the archive grows very big - then
the cactifywar task has to look all over it to check if the requested JARs
are present.

I think it is reasonable to have a parameter for the task and instruct
it to skip the search when this parameter is set.

I don't see your patch attached. Maybe you forgot to attach it?


Thanks for the point.

2008/8/19 Magnus Grimsell <ma...@idainfront.se>

> Hi all,
>
> We have been working with improving the performance of our build loop the
> last week.
> When profiling we realized that 37% of a complete build is spent in
> CactifyWarTask.addCactusJars(). Even more when building separate targets.
>
> To solve this we made a patch where you can tell CactifyWarTask that the
> cactus jars is already present. Do you think this is a good approach?
> I've attached the patch and the profile report so you guys can have look at
> it before I commit anything.
>
> Profile report:
> Call tree (all threads together)
>
>
> +--------------------------------------------------------------------------------------------------+------------------+
> |                                               Name
>                         |    Time (ms)     |
>
> +--------------------------------------------------------------------------------------------------+------------------+
> |  +---<All threads>
>                         |  375 829  100 %  |
> |    |
>                         |                  |
> |    +---org.apache.tools.ant.launch.Launcher.main(String[])
>                         |  375 016  100 %  |
> |    | |
>                         |                  |
> |    | +---iipax.embedded.ant.Application.execute()
>                        |   235 536  63 %  |
> |    | | |
>                         |                  |
> |    | |
> +---iipax.embedded.ant.application.TestApplication.makeEarTestable(File)
>              |   166 597  44 %  |
> |    | | | |
>                         |                  |
> |    | | |
> +---iipax.embedded.ant.application.TestApplication.cactifyEar(File, File)
>             |   164 644  44 %  |
> |    | | | | |
>                         |                  |
> |    | | | | +---org.apache.cactus.integration.ant.CactifyEarTask.execute()
>                        |   164 644  44 %  |
> |    | | | |   |
>                         |                  |
> |    | | | |
> +---org.apache.cactus.integration.ant.CactifyEarTask.createCactusWar()
>        |   153 834  41 %  |
> |    | | | |   | |
>                         |                  |
> |    | | | |   |
> +---org.apache.cactus.integration.ant.CactifyWarTask.execute()
>      |   141 147  38 %  |
> |    | | | |   | | |
>                         |                  |
> |    | | | |   | |
> +---org.apache.cactus.integration.ant.CactifyWarTask.addCactusJars()
>    |   138 312  37 %  |
> |    | | | |   | | |
>                         |                  |
> |    | | | |   | | +---org.apache.tools.ant.taskdefs.Zip.execute()
>                         |      2 100  1 %  |
> |    | | | |   | | |
>                         |                  |
> |    | | | |   | |
> +---org.apache.cactus.integration.ant.CactifyWarTask.getOriginalWebXml()
>    |        718  0 %  |
> |    | | | |   | | |
>                         |                  |
> |    | | | |   | |
> +---org.apache.cactus.integration.ant.CactifyWarTask.cactifyWebXml(WebXml)
>    |         15  0 %  |
> |    | | | |   | |
>                         |                  |
> |    | | | |   |
> +---org.apache.cactus.integration.ant.CactifyEarTask.addEjbReferencesToWar(File)
>  |     12 687  3 %  |
> |    | | | |   |
>                         |                  |
> |    | | | |   +---org.apache.tools.ant.taskdefs.Zip.execute()
>                         |      9 184  2 %  |
> |    | | | |   |
>                         |                  |
> |    | | | |
> +---org.apache.cactus.integration.ant.CactifyEarTask.getOriginalApplicationXml()
>    |      1 625  0 %  |
> |    | | | |
>                         |                  |
> |    | | |
> +---iipax.embedded.ant.application.TestApplication.createTestWar()
>            |      1 921  1 %  |
> |    | | | |
>                         |                  |
> |    | | | +---java.io.File.delete()
>                         |         31  0 %  |
> |    | | |
>                         |                  |
> |    | | +---iipax.embedded.ant.Application.buildPP(ProductPart, String)
>                         |     24 335  6 %  |
> |    | | |
>                         |                  |
> |    | | +---iipax.embedded.ant.application.Compiler.compile()
>                         |     23 609  6 %  |
> |    | | |
>                         |                  |
> |    | |
> +---iipax.embedded.ant.application.PPFileAssembler.addPP(ProductPart)
>               |      5 562  1 %  |
> |    | | |
>                         |                  |
> |    | |
> +---iipax.embedded.ant.application.EarUnit.addThirdParties(Collection)
>              |      3 546  1 %  |
> |    | | |
>                         |                  |
> |    | | +---iipax.embedded.ant.application.EarUnit.addPPs(Collection)
>                         |      2 906  1 %  |
> |    | | |
>                         |                  |
> |    | | +---iipax.embedded.ant.application.CrossCut.addPP(ProductPart,
> Task)                      |      2 562  1 %  |
> |    | | |
>                         |                  |
> |    | | +---iipax.embedded.ant.application.WebStartApplication.create()
>                         |      2 056  1 %  |
> |    | | |
>                         |                  |
> |    | | +---iipax.embedded.ant.application.EjbRefAdder.modify()
>                         |      1 484  0 %  |
> |    | | |
>                         |                  |
> |    | |
> +---iipax.embedded.ant.application.ConfigurationWriter.addPP(ProductPart)
>               |      1 015  0 %  |
> |    | | |
>                         |                  |
> |    | | +---iipax.embedded.ant.application.SqlWriter.close()
>                        |        953  0 %  |
> |    | | |
>                         |                  |
> |    | | +---iipax.embedded.ant.Application.createInstall()
>                        |        625  0 %  |
> |    | | |
>                         |                  |
> |    | | +---iipax.embedded.ant.application.CrossCut.close()
>                         |        234  0 %  |
> |    | | |
>                         |                  |
> |    | | +---iipax.embedded.ant.application.EarUnit.close()
>                        |         31  0 %  |
> |    | | |
>                         |                  |
> |    | | +---iipax.embedded.ant.Application.createAppDirs()
>                        |         15  0 %  |
> |    | |
>                         |                  |
> |    | +---org.apache.tools.zip.ZipOutputStream.write(byte[], int, int)
>                        |     22 554  6 %  |
> |    | |
>                         |                  |
> |    | +---org.apache.tools.tar.TarOutputStream.write(byte[], int, int)
>                        |     22 437  6 %  |
> |    | |
>                         |                  |
> |    | +---com.puppycrawl.tools.checkstyle.CheckStyleTask.execute()
>                        |     19 671  5 %  |
> |    | |
>                         |                  |
> |    | +---org.apache.tools.zip.ZipFile$BoundedInputStream.read(byte[],
> int, int)                  |     10 895  3 %  |
> |    | |
>                         |                  |
> |    | +---iipax.embedded.ant.ApiClosure.execute()
>                         |      6 921  2 %  |
> |    | |
>                         |                  |
> |    | +---org.apache.tools.zip.ZipOutputStream.write(byte[], int, int)
>                        |      3 311  1 %  |
> |    | |
>                         |                  |
> |    | +---org.apache.tools.zip.ZipOutputStream.putNextEntry(ZipEntry)
>                         |      3 203  1 %  |
> |    | |
>                         |                  |
> |    | +---org.apache.tools.zip.ZipOutputStream.write(byte[], int, int)
>                        |      2 920  1 %  |
> |    | |
>                         |                  |
> |    | +---org.apache.tools.zip.ZipFile.<init>(File, String)
>                         |      2 048  1 %  |
> |    | |
>                         |                  |
> |    | +---org.apache.tools.zip.ZipOutputStream.close()
>                        |      1 217  0 %  |
> |    | |
>                         |                  |
> |    | +---org.apache.tools.zip.ZipFile.getInputStream(ZipEntry)
>                         |        484  0 %  |
> |    | |
>                         |                  |
> |    | +---org.apache.tools.zip.ZipOutputStream.putNextEntry(ZipEntry)
>                         |        469  0 %  |
> |    | |
>                         |                  |
> |    | +---org.apache.tools.zip.ZipOutputStream.write(byte[], int, int)
>                        |        265  0 %  |
> |    | |
>                         |                  |
> |    | +---org.apache.tools.zip.ZipOutputStream.write(byte[], int, int)
>                        |        250  0 %  |
> |    | |
>                         |                  |
> |    |
> +---iipax.embedded.ant.ProductPartContainer.addConfiguredComponent(Component)
>               |        203  0 %  |
> |    | |
>                         |                  |
> |    | +---org.apache.tools.zip.ZipOutputStream.close()
>                        |        184  0 %  |
> |    | |
>                         |                  |
> |    | +---org.apache.xerces.jaxp.SAXParserFactoryImpl.newSAXParser()
>                        |        171  0 %  |
> |    | |
>                         |                  |
> |    | +---org.apache.tools.zip.ZipFile$BoundedInputStream.read(byte[],
> int, int)                  |        149  0 %  |
> |    | |
>                         |                  |
> |    | +---org.apache.tools.zip.ZipOutputStream.putNextEntry(ZipEntry)
>                         |        129  0 %  |
> |    | |
>                         |                  |
> |    | +---org.apache.tools.tar.TarOutputStream.putNextEntry(TarEntry)
>                         |        125  0 %  |
> |    | |
>                         |                  |
> |    | +---org.apache.tools.tar.TarOutputStream.closeEntry()
>                         |         78  0 %  |
> |    | |
>                         |                  |
> |    | +---org.apache.xerces.parsers.AbstractSAXParser.parse(InputSource)
>                        |         62  0 %  |
> |    | |
>                         |                  |
> |    | +---org.apache.xerces.jaxp.SAXParserFactoryImpl.newSAXParser()
>                        |         31  0 %  |
> |    | |
>                         |                  |
> |    | +---org.apache.xerces.parsers.AbstractSAXParser.parse(InputSource)
>                        |         31  0 %  |
> |    | |
>                         |                  |
> |    | +---org.apache.xerces.parsers.AbstractSAXParser.parse(InputSource)
>                        |         31  0 %  |
> |    | |
>                         |                  |
> |    | +---org.apache.tools.zip.ZipOutputStream.close()
>                        |         20  0 %  |
> |    | |
>                         |                  |
> |    | +---org.apache.tools.tar.TarOutputStream.<init>(OutputStream)
>                         |         15  0 %  |
> |    | |
>                         |                  |
> |    | +---org.apache.tools.tar.TarEntry.<init>(String)
>                        |         15  0 %  |
> |    | |
>                         |                  |
> |    | +---org.apache.tools.zip.ZipOutputStream.putNextEntry(ZipEntry)
>                         |         15  0 %  |
> |    | |
>                         |                  |
> |    | +---org.apache.tools.zip.ZipOutputStream.putNextEntry(ZipEntry)
>                         |         15  0 %  |
> |    | |
>                         |                  |
> |    | +---org.apache.tools.zip.ZipEntry.<init>(String)
>                        |         15  0 %  |
> |    | |
>                         |                  |
> |    | +---com.cenqua.clover.tasks.CloverTask.<clinit>()
>                         |         15  0 %  |
> |    | |
>                         |                  |
> |    | +---org.apache.xerces.jaxp.SAXParserFactoryImpl.newSAXParser()
>                        |         15  0 %  |
> |    | |
>                         |                  |
> |    | +---org.apache.xerces.jaxp.SAXParserFactoryImpl.newSAXParser()
>                        |         15  0 %  |
> |    |
>                         |                  |
> |    +---java.lang.ref.Finalizer$FinalizerThread.run()
>                         |        437  0 %  |
> |    |
>                         |                  |
> |    +---java.lang.ref.Reference$ReferenceHandler.run()
>                        |        328  0 %  |
> |    |
>                         |                  |
> |    +---java.lang.Thread.run()
>                        |         31  0 %  |
> |    |
>                         |                  |
> |    +---java.lang.ClassLoader.loadClassInternal(String)
>                         |         15  0 %  |
>
> +--------------------------------------------------------------------------------------------------+------------------+
>
> Generated by __PRODUCT_NAME__  2008-aug-19 09:25:22
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: cactus-dev-unsubscribe@jakarta.apache.org
> For additional commands, e-mail: cactus-dev-help@jakarta.apache.org
>



-- 
Regards, Petar!
Karlovo, Bulgaria.
- - - - - - - -
| Author @ Manning Publications.
| Technical Consultant @ HP
| BGJUG-Bulgarian Java User Group Leader.
| Apache Jakarta PMC member.
| Jakarta Cactus Lead Developer.
| Blogger: http://weblogs.java.net/blog/paranoiabla/
- - - - - - - -
Public PGP Key at:
https://keyserver1.pgp.com/vkd/DownloadKey.event?keyid=0x19658550C3110611
Key Fingerprint: A369 A7EE 61BC 93A3 CDFF 55A5 1965 8550 C311 0611