indeed.
On Fri, Jan 17, 2014 at 10:41 AM, Jake Wharton <jakewhar...@gmail.com>wrote: > I'd love to see it write a .dot file of this info as well with good > labels, colors, and weights to allow visualizing the graph. > > > --- > Jake Wharton > http://about.me/jakewharton > > > On Fri, Jan 17, 2014 at 8:35 AM, Xavier Ducrohet <x...@android.com> wrote: > >> androidDep is kinda crapy (I did it!), and it's kind of obsolete now that >> we have composite Configuration object per-variant anyway. It also doesn't >> show non Android dependencies I think. >> >> What's really missing is a global dependency graph output that shows: >> - inter-project dependencies >> - dependencies of each project (it could combine the different >> Configuration, it wouldn't really matter) + local jars (which is missing >> from the "dependencies" task). >> - all of this in a single graph. >> >> >> On Fri, Jan 17, 2014 at 7:15 AM, Siva Velusamy <vs...@google.com> wrote: >> >>> You can try "gradle androidDep" to see the dependency tree. >>> On Jan 17, 2014 7:05 AM, "Ashton Cummings" <prolink...@gmail.com> wrote: >>> >>>> It is a dependency spaghetti. =P >>>> >>>> It is a fairly deep dependency graph. With lots of libraries depending >>>> on other libraries. >>>> >>>> I am going to put a tool together real quick to get you the dependency >>>> tree. I will just rename all the projects and libraries. I will try to get >>>> it to you today some time. >>>> >>>> Thanks for your continued interest and assistance, it is greatly >>>> appreciated. >>>> >>>> On Thursday, January 16, 2014 3:55:10 PM UTC-6, Xavier Ducrohet wrote: >>>>> >>>>> (pre)dexing is a known issue. I'm not sure how much faster it's going >>>>> to be in 0.8 with parallel dexing since you have a lot of projects and you >>>>> can use parallelization there already. >>>>> >>>>> 18secs for a manifest merge seems like a crazy amount of time. do you >>>>> have a lot of manifest data to merge? >>>>> >>>>> I'm going to build a fake multi-project setup with 100s of project to >>>>> look at scaling issues. Can you tell me a bit more about your >>>>> inter-project >>>>> dependencies? Basically do you have 1 apps and 139 flat libs that don't >>>>> depend on each other, or do you have a fairly deep dependency graph with >>>>> lots of transitive dependencies? >>>>> >>>>> >>>>> On Thu, Jan 16, 2014 at 12:09 PM, Ashton Cummings >>>>> <proli...@gmail.com>wrote: >>>>> >>>>>> *"clean build" with no changes = 3h1m53.88s* >>>>>> >>>>>> Top 15 tasks (roughly the same for each project) >>>>>> :projectA:preDexRelease 1m26.29s >>>>>> :projectA:preDexDebug 1m25.14s >>>>>> :projectA:processDebugManifest 18.452s >>>>>> :projectA:processReleaseManifest 17.705s >>>>>> :projectA:lint 10.699s >>>>>> :projectA:mergeReleaseResources 8.264s >>>>>> :projectA:dexDebug 7.742s >>>>>> :projectA:dexRelease 7.449s >>>>>> :projectA:mergeDebugResources 4.303s >>>>>> :projectA:compileDebugJava 1.672s >>>>>> :projectA:processReleaseResources 1.662s >>>>>> :projectA:processDebugResources 1.325s >>>>>> :projectA:compileReleaseJava 1.219s >>>>>> :projectA:packageDebug 1.179s >>>>>> :projectA:packageRelease 0.923s >>>>>> >>>>>> >>>>>> *clean assembleDebug with pre-dex turned off = 58m58.29s* >>>>>> >>>>>> Top 15 tasks (roughly the same for each project) >>>>>> :projectA:dexDebug 56.567s >>>>>> :projectA:mergeDebugResources 5.135s >>>>>> :projectA:processDebugManifest 3.517s >>>>>> :projectA:compileDebugJava 1.579s >>>>>> :projectA:packageDebug 1.174s >>>>>> :projectA:processDebugResources 0.972s >>>>>> :projectA:processDebugJavaRes 0.373s UP-TO-DATE :projectA: >>>>>> prepareLibrary1UnspecifiedLibrary 0.340s >>>>>> :projectA:prepareLibrary2UnspecifiedLibrary 0.218s >>>>>> :projectA:compileDebugAidl 0.057s >>>>>> :projectA:compileDebugRenderscript 0.046s >>>>>> :projectA:prepareLibrary3UnspecifiedLibrary 0.045s >>>>>> :projectA:prepareLibrary4UnspecifiedLibrary 0.043s >>>>>> :projectA:prepareLibrary5UnspecifiedLibrary 0.029s >>>>>> :projectA:prepareLibrary6UnspecifiedLibrary 0.028s >>>>>> >>>>>> I can not find my data for the parallel run. I will do another one of >>>>>> those runs and post the data. Let me know if this is helpful for you. >>>>>> >>>>>> Thanks >>>>>> >>>>>> >>>>>> On Thursday, January 16, 2014 1:46:45 PM UTC-6, Ashton Cummings wrote: >>>>>>> >>>>>>> I have been using --profile to figure out the bottlenecks. However, >>>>>>> due to the nature of our project, i can not share that information. =/ >>>>>>> >>>>>>> I can give you times and stuff, just not project names and details. >>>>>>> So, unless i modify the data substantially, i can not share the profile >>>>>>> info. Sorry. >>>>>>> >>>>>>> However, i will give you the build time improvements and where the >>>>>>> bottlenecks are. If you need any specifics, let me know. I will try and >>>>>>> get >>>>>>> you details that i can. >>>>>>> >>>>>>> I will get the info to you as soon as i can. I have so much profile >>>>>>> data now, i am going to have to run through it and see if i can find the >>>>>>> correct data. Might just do the runs again to make sure to get you the >>>>>>> correct data. >>>>>>> >>>>>>> On Thursday, January 16, 2014 12:21:46 PM UTC-6, Xavier Ducrohet >>>>>>> wrote: >>>>>>>> >>>>>>>> Do you remember the time gain you had when disabling pre-dexing? >>>>>>>> >>>>>>>> If you wouldn't mind. I'd love to get the output of running gradle >>>>>>>> with --profile. It will create a report in the build folder of the main >>>>>>>> project which will show me build time for all projects and all tasks >>>>>>>> in all >>>>>>>> projects. >>>>>>>> >>>>>>>> >>>>>>>> On Thu, Jan 16, 2014 at 10:06 AM, Ashton Cummings < >>>>>>>> proli...@gmail.com> wrote: >>>>>>>> >>>>>>>>> I hope that we can. Our alternatives that i am testing are Maven >>>>>>>>> and ANT. Right now our maven approach is showing times that are >>>>>>>>> comparable >>>>>>>>> to our ANT. I personally want to stick with gradle, however, the >>>>>>>>> decision >>>>>>>>> is not up to me. I just give the higher ups my results and >>>>>>>>> conclusions. =) >>>>>>>>> >>>>>>>>> I will keep an eye out for those performance improvements and will >>>>>>>>> keep our people informed. >>>>>>>>> >>>>>>>>> Thank you for your time and assistance. If you figure out anything >>>>>>>>> else or have any other suggestions, please continue to contact me. I >>>>>>>>> really >>>>>>>>> hope to convince them to move to gradle. >>>>>>>>> >>>>>>>>> >>>>>>>>> On Thursday, January 16, 2014 11:13:32 AM UTC-6, Xavier Ducrohet >>>>>>>>> wrote: >>>>>>>>> >>>>>>>>>> BTW, we are still a ways off from 1.0. I totally understand not >>>>>>>>>> wanting to switch to Gradle right now (especially given your build >>>>>>>>>> times), >>>>>>>>>> but if you decide to not switch right now, please don't plan to >>>>>>>>>> stick with >>>>>>>>>> Ant for 2+ years (or some other random long duration). >>>>>>>>>> The Gradle build system will see a lot of changes in the next 6 >>>>>>>>>> months. I would recommend revisiting it mid-year at least :) >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> On Thu, Jan 16, 2014 at 9:10 AM, Xavier Ducrohet < >>>>>>>>>> x...@android.com> wrote: >>>>>>>>>> >>>>>>>>>>> http://tools.android.com/tech-docs/new-build-system contains >>>>>>>>>>> our changelog. >>>>>>>>>>> >>>>>>>>>>> We generally don't include Gradle specific changes in it even >>>>>>>>>>> when we start requiring newer versions of Gradle, but performance >>>>>>>>>>> fixes >>>>>>>>>>> will probably be indicated in it because we know it's a pain point. >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> On Thu, Jan 16, 2014 at 8:54 AM, Ashton Cummings < >>>>>>>>>>> proli...@gmail.com> wrote: >>>>>>>>>>> >>>>>>>>>>>> Xavier, >>>>>>>>>>>> >>>>>>>>>>>> Thanks for the information. We are coming to a point now where >>>>>>>>>>>> the decision to switch our build process is coming to an end. We >>>>>>>>>>>> would >>>>>>>>>>>> really like to move to gradle, hopefully you guys are able to get >>>>>>>>>>>> these >>>>>>>>>>>> optimizations in soon. Once we make the decision, we are going to >>>>>>>>>>>> be stuck >>>>>>>>>>>> with it for a while. >>>>>>>>>>>> >>>>>>>>>>>> Where can i keep up to date with the exact changes that are >>>>>>>>>>>> going into each build of the gradle plugin? I need to know when >>>>>>>>>>>> these >>>>>>>>>>>> changes are in place as soon as possible. >>>>>>>>>>>> >>>>>>>>>>>> Thanks >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> On Thursday, January 16, 2014 10:48:52 AM UTC-6, Xavier >>>>>>>>>>>> Ducrohet wrote: >>>>>>>>>>>> >>>>>>>>>>>>> Right now each project will pre-dex its dependencies on its >>>>>>>>>>>>> own. This means 2 components depending on the same library will >>>>>>>>>>>>> both run >>>>>>>>>>>>> pre-dex on that library's classes.jar which is silly. We're >>>>>>>>>>>>> looking at >>>>>>>>>>>>> fixing this. >>>>>>>>>>>>> >>>>>>>>>>>>> Another thing we are looking at is parallelization at the task >>>>>>>>>>>>> level. Right now Gradle only supports it at the projects level. >>>>>>>>>>>>> It'll build >>>>>>>>>>>>> 2 sub projects in parallel (if there are no dependencies between >>>>>>>>>>>>> the two), >>>>>>>>>>>>> but in a single project it won't parallelize its task. We are >>>>>>>>>>>>> working with >>>>>>>>>>>>> the Gradle developers to change this. >>>>>>>>>>>>> >>>>>>>>>>>>> Of course the tasks themselves can do their work in parallel, >>>>>>>>>>>>> and most of our tasks do already. Pre-dexing doesn't though, so >>>>>>>>>>>>> if a >>>>>>>>>>>>> project has more than one dependencies it'll run pre-dex one by >>>>>>>>>>>>> one. This >>>>>>>>>>>>> is fixed in the next Gradle version. >>>>>>>>>>>>> >>>>>>>>>>>>> We do take performance very seriously, but we also wanted to >>>>>>>>>>>>> provide a lot of features and flexibility in our build. This >>>>>>>>>>>>> means we do >>>>>>>>>>>>> some extra work. For instance our resource merger is extra work >>>>>>>>>>>>> that aapt >>>>>>>>>>>>> does in a way but differently (more efficiently in some ways, >>>>>>>>>>>>> less in >>>>>>>>>>>>> others, but with much less flexibility). We are working to do >>>>>>>>>>>>> more to >>>>>>>>>>>>> optimize each task and, as I mentioned above, provide generic >>>>>>>>>>>>> performance >>>>>>>>>>>>> improvements as well. >>>>>>>>>>>>> >>>>>>>>>>>>> I'm a bit surprised your build went from 1:20 to only 0:58 >>>>>>>>>>>>> when running assembleDebug vs build. 'build' does both debug and >>>>>>>>>>>>> release >>>>>>>>>>>>> but also runs lint. It should be a lot more work than just >>>>>>>>>>>>> assembleDebug. >>>>>>>>>>>>> Also, do you have flavors? >>>>>>>>>>>>> >>>>>>>>>>>>> One other thing to consider is incremental build. Pre-dexing >>>>>>>>>>>>> for instance makes clean build clearly slower but incremental >>>>>>>>>>>>> builds >>>>>>>>>>>>> faster. The rest of the build is also very good at only doing >>>>>>>>>>>>> what needs to >>>>>>>>>>>>> be done and nothing extra, which Ant wasn't very good at. >>>>>>>>>>>>> >>>>>>>>>>>>> Disabling pre-dexing on all projects without touching each >>>>>>>>>>>>> project's build.gradle doesn't seem to be easy. The issue is that >>>>>>>>>>>>> doing (in >>>>>>>>>>>>> the main build.gradle): >>>>>>>>>>>>> >>>>>>>>>>>>> subprojects { >>>>>>>>>>>>> /// some config >>>>>>>>>>>>> } >>>>>>>>>>>>> >>>>>>>>>>>>> this gets applied before all the other projects' own >>>>>>>>>>>>> build.gradle are applied. So unless you can apply the 'android' or >>>>>>>>>>>>> 'android-library' in there, you won't be able to use our DSL. I >>>>>>>>>>>>> need to >>>>>>>>>>>>> look into this. >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> On Thu, Jan 16, 2014 at 6:51 AM, Ashton Cummings < >>>>>>>>>>>>> proli...@gmail.com> wrote: >>>>>>>>>>>>> >>>>>>>>>>>>>> My Stack post <http://stackoverflow.com/q/21125302/427763> >>>>>>>>>>>>>> >>>>>>>>>>>>>> Using gradle 1.9-rc-3 >>>>>>>>>>>>>> When building with gradle on a multi-project setup containing >>>>>>>>>>>>>> roughly 140 projects/libraries, the build time took 1 hour and >>>>>>>>>>>>>> 22 minutes. >>>>>>>>>>>>>> And i was using "--parallel". And our ANT build takes less >>>>>>>>>>>>>> than 20 minutes without parallel building. >>>>>>>>>>>>>> >>>>>>>>>>>>>> Here is what i was initially doing: >>>>>>>>>>>>>> >>>>>>>>>>>>>> ./gradlew clean >>>>>>>>>>>>>>> ./gradlew build --parallel >>>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> This took 1 hour and 22 minutes, roughly. I did a little >>>>>>>>>>>>>> testing it seems like the dexing is taking the longest amount of >>>>>>>>>>>>>> time. Is >>>>>>>>>>>>>> there a way to get the gradle process to re-use the stuff it has >>>>>>>>>>>>>> already >>>>>>>>>>>>>> dexed? If the libraries have already been built, it should >>>>>>>>>>>>>> re-use the >>>>>>>>>>>>>> already dexed libraries. >>>>>>>>>>>>>> >>>>>>>>>>>>>> I saw the option --no-rebuild, but when i run with that >>>>>>>>>>>>>> option it says the following: >>>>>>>>>>>>>> >>>>>>>>>>>>>>> File '/path/to/project/build/libs/project.aar' specified for >>>>>>>>>>>>>>> property 'bundle' does not exist. >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> I replaced the path and the project name with generic stuff. >>>>>>>>>>>>>> >>>>>>>>>>>>>> *** >>>>>>>>>>>>>> >>>>>>>>>>>>>> After some assistance i added "preDexLibraries = false" to >>>>>>>>>>>>>> all of my "build.gradle" files. However, i still would like to >>>>>>>>>>>>>> know a >>>>>>>>>>>>>> centralize place that i can put that entry and it affect all the >>>>>>>>>>>>>> other >>>>>>>>>>>>>> "build.gradle" files. Because having to add that to all of the >>>>>>>>>>>>>> "build.gradle" files is annoying and if i ever have to remove >>>>>>>>>>>>>> it, it will >>>>>>>>>>>>>> be more annoying. This did not reduce the time to what we are >>>>>>>>>>>>>> needing. >>>>>>>>>>>>>> >>>>>>>>>>>>>> After some more assistance, i ran "assembleDebug" instead of >>>>>>>>>>>>>> "build". This way it will only do debug builds instead of both >>>>>>>>>>>>>> release and >>>>>>>>>>>>>> debug. This still did not bring us down to the time we are >>>>>>>>>>>>>> getting with >>>>>>>>>>>>>> ANT. With all these changes we are only down to 58 minutes. And >>>>>>>>>>>>>> our ANT >>>>>>>>>>>>>> process is less than 20 minutes. Our ANT process is what android >>>>>>>>>>>>>> provides >>>>>>>>>>>>>> only modified to support large multi-project setups and to >>>>>>>>>>>>>> re-use dexed >>>>>>>>>>>>>> libraries. The dex process in the gradle process is taking 1+ >>>>>>>>>>>>>> minute for >>>>>>>>>>>>>> each project. It is by far the largest time consumer. >>>>>>>>>>>>>> >>>>>>>>>>>>>> *** >>>>>>>>>>>>>> >>>>>>>>>>>>>> So, how can we speed the process up more? Is gradle re-using >>>>>>>>>>>>>> the dexed libraries after they have been dexed? What are your >>>>>>>>>>>>>> suggestions? >>>>>>>>>>>>>> For us to move over to gradle, it has to be able to compete with >>>>>>>>>>>>>> the ANT >>>>>>>>>>>>>> process. >>>>>>>>>>>>>> >>>>>>>>>>>>>> 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 adt-dev+u...@googlegroups.com. >>>>>>>>>>>>>> >>>>>>>>>>>>>> For more options, visit https://groups.google.com/grou >>>>>>>>>>>>>> ps/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 adt-dev+u...@googlegroups.com. >>>>>>>>>>>> For more options, visit https://groups.google.com/grou >>>>>>>>>>>> ps/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 adt-dev+u...@googlegroups.com. >>>>>>>>> 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 adt-dev+u...@googlegroups.com. >>>>>> 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 adt-dev+unsubscr...@googlegroups.com. >>>> 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 adt-dev+unsubscr...@googlegroups.com. >>> 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 adt-dev+unsubscr...@googlegroups.com. >> 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 adt-dev+unsubscr...@googlegroups.com. > 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 adt-dev+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.