ant-ivy-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Hans Dockter <>
Subject Ivy Performance
Date Wed, 02 Sep 2009 10:10:09 GMT

I'm trying to improve the resolve performance of Gradle's usage of Ivy.

As a test I have an ivy module with three configurations (testRuntime  
extends testCompile extends compile).

As a comparison I use the following ant script:

<?xml version="1.0"?>
<project xmlns:ivy="antlib:org.apache.ivy.ant" name="sample"  
     <target name="resolve1">
         <ivy:resolve conf="compile" haltonfailure="false"/>

     <target name="resolve11" depends="resolve1">
         <ivy:resolve conf="compile" haltonfailure="false"/>

     <target name="resolve2" depends="resolve1">
         <ivy:resolve conf="testCompile" haltonfailure="false"/>

     <target name="resolve3" depends="resolve2">
         <ivy:resolve conf="testRuntime" haltonfailure="false"/>

     <target name="resolve4">
         <ivy:resolve conf="compile,testCompile,testRuntime"  

The Ant resolve seems to be smart in that it remembers earlier  
resolves. For example when executing resolve11 the second resolve is  
much faster than the first resolve. This is also true for resolves of  
extending configuration (e.g. resolve2 and resolve3).

The difference between resolve3 and the aggregate resolve4 is only 200  
ms in my example (1800ms vs 1600ms).

With Gradle the resolve performance of successive resolves seems not  
to benefit from earlier resolves. Unfortunately I was not successful  
yet to improve this behaviour. We use the same Ivy instance for  
successive resolves.

Where in Ivy does the optimization takes place? What can I do to  
switch this on?

Any help is very much appreciated

- Hans

Hans Dockter
Gradle Project Manager

View raw message