General info:

   - All apps compile with Java 7
   - All apps minSdkVersion=14, targetSdkVersion=19, compileSdkVersion=19
   - All apps build tools 19.0.0 (will ensure 19.0.1 doesn’t change
   behavior)

Project structure:

$ tree -d -L 2
.
├── one
│   ├── one-app
│   └── one-protos
├── two
│   ├── two-protos
│   ├── two-v0
│   └── two-v1
├── common
│   ├── truststore
│   ├── typeface-square-market
│   └── zxing-qrcode
└── three
    ├── three-app
    └── three-protos

App “One”:

apk
+--- com.jakewharton.hugo:hugo-annotations:1.0.0
+--- com.android.support:support-v4:19.0.+ -> 19.0.0
+--- com.google.android.gms:play-services:4.0.+ -> 4.0.30
|    \--- com.android.support:support-v4:13.0.0 -> 19.0.0
+--- com.squareup.dagger:dagger:1.2.0
|    \--- javax.inject:javax.inject:1
+--- com.squareup.okhttp:okhttp:1.2.1
|    \--- com.squareup.okhttp:okhttp-protocols:1.2.1
+--- com.squareup.picasso:picasso:2.1.1
+--- com.squareup:pollexor:1.2.0
+--- com.squareup:otto:1.3.4
+--- com.squareup.retrofit:retrofit:1.3.0
|    \--- com.google.code.gson:gson:2.2.4
+--- com.squareup.retrofit:converter-wire:1.3.0
|    +--- com.squareup.retrofit:retrofit:1.3.0 (*)
|    \--- com.squareup.wire:wire-runtime:1.2.0 -> 1.3.0-SNAPSHOT
+--- com.jakewharton:butterknife:4.0.1
+--- com.jakewharton.timber:timber:2.1.0
+--- com.netflix.rxjava:rxjava-core:0.16.0
+--- com.netflix.rxjava:rxjava-android:0.16.0
|    \--- com.netflix.rxjava:rxjava-core:0.16.0
+--- com.crashlytics.android:crashlytics:1.+ -> 1.1.5
+--- sterling.common:truststore:unspecified
+--- sterling.common:typeface-square-market:unspecified
\--- sterling.one:one-protos:unspecified
     \--- com.squareup.wire:wire-runtime:1.3.0-SNAPSHOT

debugApk
+--- com.jakewharton.hugo:hugo-runtime:1.0.0
|    +--- com.jakewharton.hugo:hugo-annotations:1.0.0
|    \--- org.aspectj:aspectjrt:1.7.4
+--- com.squareup.retrofit:retrofit-mock:1.3.0
|    \--- com.squareup.retrofit:retrofit:1.3.0
|         \--- com.google.code.gson:gson:2.2.4
+--- com.github.kevinsawicki:http-request:5.5
+--- com.jakewharton.madge:madge:1.1.1
\--- com.jakewharton.scalpel:scalpel:1.0.0

apt
\--- com.squareup.dagger:dagger-compiler:1.2.0
     +--- com.squareup.dagger:dagger:1.2.0
     |    \--- javax.inject:javax.inject:1
     +--- com.squareup:javawriter:2.3.0
     \--- com.google.guava:guava:15.0

App “Two”:

apk
+--- com.android.support:support-v4:19.0.+ -> 19.0.0
+--- com.google.android.gms:play-services:4.0.+ -> 4.0.30
|    \--- com.android.support:support-v4:13.0.0 -> 19.0.0
+--- com.squareup.retrofit:retrofit:1.2.1
|    \--- com.google.code.gson:gson:2.2.4
+--- com.squareup.retrofit:converter-wire:1.2.1
|    +--- com.squareup.retrofit:retrofit:1.2.1 (*)
|    \--- com.squareup.wire:wire-runtime:1.0.1 -> 1.0.2-SNAPSHOT
+--- com.squareup.dagger:dagger:1.2.+ -> 1.2.0
|    \--- javax.inject:javax.inject:1
+--- com.squareup.okhttp:okhttp:1.2.1
|    \--- com.squareup.okhttp:okhttp-protocols:1.2.1
+--- com.squareup.picasso:picasso:2.0.2
+--- com.squareup.wire:wire-runtime:1.0.1 -> 1.0.2-SNAPSHOT
+--- com.crashlytics.android:crashlytics:1.0.2
+--- com.flurry:agent:2.2.5
+--- com.jakewharton:butterknife:4.0.+ -> 4.0.1
+--- com.jakewharton.timber:timber:2.0.+ -> 2.0.0
+--- sterling.common:typeface-square-market:unspecified
\--- sterling.two:two-protos:unspecified
     \--- com.squareup.wire:wire-runtime:1.0.2-SNAPSHOT

apt
\--- com.squareup.dagger:dagger-compiler:1.2.+ -> 1.2.0
     +--- com.squareup.dagger:dagger:1.2.0
     |    \--- javax.inject:javax.inject:1
     +--- com.squareup:javawriter:2.3.0
     \--- com.google.guava:guava:15.0

App “Three”:

apk
+--- com.android.support:support-v4:19.0.+ -> 19.0.0
+--- com.google.android.gms:play-services:3.2.+ -> 3.2.65
|    \--- com.android.support:support-v4:13.0.0 -> 19.0.0
+--- com.squareup.dagger:dagger:1.0.1
|    \--- javax.inject:javax.inject:1
+--- com.squareup.okhttp:okhttp:1.2.1
|    \--- com.squareup.okhttp:okhttp-protocols:1.2.1
+--- com.squareup.picasso:picasso:2.1.1
+--- com.squareup.phrase:phrase:1.0-SNAPSHOT
+--- com.squareup.retrofit:retrofit:1.2.3-SNAPSHOT
|    \--- com.google.code.gson:gson:2.2.4
+--- com.squareup.retrofit:converter-wire:1.2.3-SNAPSHOT
|    +--- com.squareup.retrofit:retrofit:1.2.3-SNAPSHOT (*)
|    \--- com.squareup.wire:wire-runtime:1.2.0 -> 1.3.0-SNAPSHOT
+--- com.jakewharton:butterknife:4.0.+ -> 4.0.1
+--- com.jakewharton.timber:timber:2.0.0
+--- com.netflix.rxjava:rxjava-core:0.15.+ -> 0.15.1
+--- com.netflix.rxjava:rxjava-android:0.15.+ -> 0.15.1
|    \--- com.netflix.rxjava:rxjava-core:0.15.1
+--- com.crashlytics.android:crashlytics:1.0.+ -> 1.0.4
+--- sterling.common:truststore:unspecified
+--- sterling.common:typeface-square-market:unspecified
+--- sterling.common:zxing-qrcode:unspecified
\--- sterling.three:three-protos:unspecified
     \--- com.squareup.wire:wire-runtime:1.3.0-SNAPSHOT

debugApk
\--- com.squareup.retrofit:retrofit-mock:1.2.3-SNAPSHOT
     \--- com.squareup.retrofit:retrofit:1.2.3-SNAPSHOT
          \--- com.google.code.gson:gson:2.2.4



---
Jake Wharton
http://about.me/jakewharton


On Wed, Jan 8, 2014 at 8:39 AM, Xavier Ducrohet <[email protected]> wrote:

> wow, the difference is crazy. If you can provide the dependency tree that
> would be nice.
>
> I was looking at the code for the PreDex task and realize we don't
> parallelize the pre-dexing when there are more than one library which I
> thought we did. I think dx is making use of all the cores but I'm not sure
> how much it would help for this case.
>
>
> On Wed, Jan 8, 2014 at 1:27 AM, Jake Wharton <[email protected]>wrote:
>
>> All of these benchmarks are done with nothing in gradle.properties.
>>
>> With pre-dexing off, ./gradlew clean assemble --profile --offline:
>>
>> :one:one-app    1m13.07s
>>   :one:one-app:dexDogfood    17.612s
>>   :one:one-app:dexRelease    17.261s
>>   :one:one-app:dexDebug      15.849s
>>
>> :two:two-v1    1m1.84s
>>   :two:two-v1:dexDogfood    15.553s
>>   :two:two-v1:dexDebug      15.066s
>>   :two:two-v1:dexRelease    14.183s
>>
>> :three:three-app    36.907s
>>   :three:three-app:dexDebug      9.278s
>>   :three:three-app:dexDogfood    8.848s
>>   :three:three-app:dexRelease    8.654s
>>
>> With pre-dexing on, ./gradlew clean assemble --profile --offline:
>>
>> :one:one-app    3m14.97s
>>   :one:one-app:preDexDebug      58.122s
>>   :one:one-app:preDexRelease    51.320s
>>   :one:one-app:preDexDogfood    50.261s
>>   :one:one-app:dexDebug         5.591s
>>   :one:one-app:dexDogfood       4.257s
>>   :one:one-app:dexRelease       4.037s
>>
>> :two:two-v1    2m29.22s
>>   :two:two-v1:preDexDogfood    36.434s
>>   :two:two-v1:preDexDebug      36.408s
>>   :two:two-v1:preDexRelease    35.988s
>>   :two:two-v1:dexDogfood       14.891s
>>   :two:two-v1:dexDebug         4.893s
>>   :two:two-v1:dexRelease       4.003s
>>
>> :three:three-app    2m14.54s
>>   :three:three-app:preDexRelease    44.191s
>>   :three:three-app:preDexDebug      35.970s
>>   :three:three-app:preDexDogfood    33.390s
>>   :three:three-app:dexDebug         3.956s
>>   :three:three-app:dexRelease       3.575s
>>   :three:three-app:dexDogfood       3.451s
>>
>> $ java -version
>> java version "1.8.0-ea"
>> Java(TM) SE Runtime Environment (build 1.8.0-ea-b116)
>> Java HotSpot(TM) 64-Bit Server VM (build 25.0-b58, mixed mode)
>>
>> $ ./gradlew --version
>>
>> ------------------------------------------------------------
>> Gradle 1.9
>> ------------------------------------------------------------
>>
>> Build time:   2013-11-19 08:20:02 UTC
>> Build number: none
>> Revision:     7970ec3503b4f5767ee1c1c69f8b4186c4763e3d
>>
>> Groovy:       1.8.6
>> Ant:          Apache Ant(TM) version 1.9.2 compiled on July 8 2013
>> Ivy:          2.2.0
>> JVM:          1.8.0-ea (Oracle Corporation 25.0-b58)
>> OS:           Mac OS X 10.8.5 x86_64
>>
>> Let me know if there's anything else I can provide (e.g., dependency
>> tree?)
>>
>>
>>
>> ---
>> Jake Wharton
>> http://about.me/jakewharton
>>
>>
>> On Tue, Jan 7, 2014 at 9:39 PM, Xavier Ducrohet <[email protected]> wrote:
>>
>>> BTW I'm interested in the time it takes to do predex + dex vs dex only
>>> (no pre-dexing) for clean builds
>>>
>>> It's worth it in incremental builds, but I'm suprised clean builds are
>>> so much longer. I'd like to send some stats to the VM team (who owns dx)
>>>
>>> thanks.
>>>
>>>
>>>
>>> On Tue, Jan 7, 2014 at 11:36 PM, Xavier Ducrohet <[email protected]>wrote:
>>>
>>>> android {
>>>>   dexOptions {
>>>>     preDexLibraries = false
>>>>   }
>>>> }
>>>>
>>>>
>>>> On Tue, Jan 7, 2014 at 3:13 PM, Jake Wharton <[email protected]>wrote:
>>>>
>>>>> Well it's definitely pre-dexing. Can this be easily disabled for CI
>>>>> builds?
>>>>>
>>>>> :app1:app1-app 3m14.13s
>>>>>   :app1:app1-app:preDexDebug 1m5.23s
>>>>>   :app1:app1-app:preDexDogfood 51.836s
>>>>>   :app1:app1-app:preDexRelease 41.499s
>>>>>
>>>>> 81% of time spent pre-dexing
>>>>>
>>>>>
>>>>> :app2:app2-v1 2m25.18s
>>>>>   :app2:app2-v1:preDexRelease 39.274s
>>>>>   :app2:app2-v1:preDexDogfood 38.637s
>>>>>   :app2:app2-v1:preDexDebug 36.630s
>>>>>
>>>>> 78% of time spent pre-dexing
>>>>>
>>>>>
>>>>> :app3:app3-app 2m18.30s
>>>>>   :app3:app3-app:preDexRelease 45.504s
>>>>>   :app3:app3-app:preDexDebug 36.681s
>>>>>   :app3:app3-app:preDexDogfood 34.769s
>>>>>
>>>>> 84% of time spent pre-dexing
>>>>>
>>>>>
>>>>> ---
>>>>> Jake Wharton
>>>>> http://about.me/jakewharton
>>>>>
>>>>>
>>>>> On Mon, Jan 6, 2014 at 10:37 PM, Jake Wharton 
>>>>> <[email protected]>wrote:
>>>>>
>>>>>> They were clean builds, yes. I'll dig deeper tomorrow. It was the end
>>>>>> of the work day for me when we started the comparisons.
>>>>>>
>>>>>>
>>>>>> ---
>>>>>> Jake Wharton
>>>>>> http://about.me/jakewharton
>>>>>>
>>>>>>
>>>>>> On Mon, Jan 6, 2014 at 6:07 PM, Xavier Ducrohet <[email protected]>wrote:
>>>>>>
>>>>>>> incremental dexing has been disabled. There are some issues with it.
>>>>>>> We have implemented pre-dexing though, but I'm not sure how the 
>>>>>>> performance
>>>>>>> is impacted.
>>>>>>>
>>>>>>> Are those time for clean builds? (which should not be impacted by
>>>>>>> the removal of the incremental dex).
>>>>>>>
>>>>>>>
>>>>>>> On Mon, Jan 6, 2014 at 4:50 PM, Jake Wharton 
>>>>>>> <[email protected]>wrote:
>>>>>>>
>>>>>>>> I forgot to ask a question... Is anyone else seeing anything like
>>>>>>>> this?
>>>>>>>>
>>>>>>>> I see this on small pet projects too. I can perceive tasks taking
>>>>>>>> 10x longer than when on 0.6.x. Usually those towards the latter end of 
>>>>>>>> the
>>>>>>>> processing (preDex, dex, assemble).
>>>>>>>>
>>>>>>>> Still digging for more info to pinpoint what is happening.
>>>>>>>>
>>>>>>>>
>>>>>>>> ---
>>>>>>>> Jake Wharton
>>>>>>>> http://about.me/jakewharton
>>>>>>>>
>>>>>>>>
>>>>>>>> On Mon, Jan 6, 2014 at 4:44 PM, Jake Wharton <[email protected]
>>>>>>>> > wrote:
>>>>>>>>
>>>>>>>>> Our project builds have experienced a serious regression in terms
>>>>>>>>> of performance upon upgrading to 0.7.x.
>>>>>>>>>
>>>>>>>>> Without --parallel:
>>>>>>>>>
>>>>>>>>>    - 0.6.x: 4m 21s
>>>>>>>>>    - 0.7.x: 9m 04s
>>>>>>>>>
>>>>>>>>> With --parallel:
>>>>>>>>>
>>>>>>>>>    - 0.6.x: 3m 36s
>>>>>>>>>    - 0.7.x: 6m 58s
>>>>>>>>>
>>>>>>>>> This project has 3 apps (each with three build types, no flavors),
>>>>>>>>> 4 library modules, and 3 java modules.
>>>>>>>>>
>>>>>>>>> ---
>>>>>>>>> Jake Wharton
>>>>>>>>> http://about.me/jakewharton
>>>>>>>>>
>>>>>>>>
>>>>>>>>  --
>>>>>>>> You received this message because you are subscribed to the Google
>>>>>>>> Groups "adt-dev" group.
>>>>>>>> To unsubscribe from this group and stop receiving emails from it,
>>>>>>>> send an email to [email protected].
>>>>>>>> For more options, visit https://groups.google.com/groups/opt_out.
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> --
>>>>>>> Xavier Ducrohet
>>>>>>> Android SDK Tech Lead
>>>>>>> Google Inc.
>>>>>>> http://developer.android.com | http://tools.android.com
>>>>>>>
>>>>>>> Please do not send me questions directly. Thanks!
>>>>>>>
>>>>>>> --
>>>>>>> You received this message because you are subscribed to the Google
>>>>>>> Groups "adt-dev" group.
>>>>>>> To unsubscribe from this group and stop receiving emails from it,
>>>>>>> send an email to [email protected].
>>>>>>> For more options, visit https://groups.google.com/groups/opt_out.
>>>>>>>
>>>>>>
>>>>>>
>>>>>  --
>>>>> You received this message because you are subscribed to the Google
>>>>> Groups "adt-dev" group.
>>>>> To unsubscribe from this group and stop receiving emails from it, send
>>>>> an email to [email protected].
>>>>> For more options, visit https://groups.google.com/groups/opt_out.
>>>>>
>>>>
>>>>
>>>>
>>>> --
>>>> Xavier Ducrohet
>>>> Android SDK Tech Lead
>>>> Google Inc.
>>>> http://developer.android.com | http://tools.android.com
>>>>
>>>> Please do not send me questions directly. Thanks!
>>>>
>>>
>>>
>>>
>>> --
>>> Xavier Ducrohet
>>> Android SDK Tech Lead
>>> Google Inc.
>>> http://developer.android.com | http://tools.android.com
>>>
>>> Please do not send me questions directly. Thanks!
>>>
>>> --
>>> You received this message because you are subscribed to the Google
>>> Groups "adt-dev" group.
>>> To unsubscribe from this group and stop receiving emails from it, send
>>> an email to [email protected].
>>> For more options, visit https://groups.google.com/groups/opt_out.
>>>
>>
>>  --
>> You received this message because you are subscribed to the Google Groups
>> "adt-dev" group.
>> To unsubscribe from this group and stop receiving emails from it, send an
>> email to [email protected].
>> For more options, visit https://groups.google.com/groups/opt_out.
>>
>
>
>
> --
> Xavier Ducrohet
> Android SDK Tech Lead
> Google Inc.
> http://developer.android.com | http://tools.android.com
>
> Please do not send me questions directly. Thanks!
>
> --
> You received this message because you are subscribed to the Google Groups
> "adt-dev" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> For more options, visit https://groups.google.com/groups/opt_out.
>

-- 
You received this message because you are subscribed to the Google Groups 
"adt-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to