+1 what Jesse said

On Tuesday, April 19, 2016, Jesse <[email protected]> wrote:

> This sounds great!
> Personally, I don't think this belongs behind a flag, why would anyone not
> want to build faster?
> I think we just need to test more to make sure it functions as expected
> everywhere, and then it should just make it's way in directly, without the
> overhead of addition flag code, or documentation ...
>
>
> @purplecabbage
> risingj.com
>
> On Tue, Apr 19, 2016 at 5:58 PM, Jason Ginchereau <[email protected]
> <javascript:;>>
> wrote:
>
> > I collected data for 4 projects with varying numbers and sizes of source
> > files (mostly .js and .png):
> >     Tiny  :     17 files, 0.24 MB (A new Cordova project created from the
> > VS template)
> >     Small :     55 files,  7.7 MB
> >     Medium:    242 files,   44 MB
> >     Large : 12,923 files,  134 MB
> >
> > Following are full -> incremental times for 'cordova prepare android'
> > commands, without any source file changes in between, averaged over 5
> warm
> > runs on my medium-spec Windows desktop machine with SSD:
> >
> >     Tiny  :  1.98 -> 1.84 s
> >     Small :  2.40 -> 1.94 s
> >     Medium:  4.22 -> 2.02 s
> >     Large : 50.24 -> 5.81 s
> >
> > As you can see, larger projects see greatly improved prepare times when
> > using the incremental option.
> >
> > Also, I confirmed that without using the --incremental option with this
> > change, times are not measurably different compared to the released
> version
> > 6.1.1 of Cordova. So there doesn't seem to be any regression compared to
> > the previous use of shelljs.cp('-R') to blindly copy files when
> preparing.
> >
> > Jason
> >
> > -----Original Message-----
> > From: Steven Gill [mailto:[email protected] <javascript:;>]
> > Sent: Tuesday, April 19, 2016 3:14 PM
> > To: [email protected] <javascript:;>
> > Subject: Re: [DISCUSS] Faster incremental builds
> >
> > Sounds like a worthy cause. Do you have any stats on how much time is
> > saved?
> >
> > Definitely put it behind the --incremental flag to start.
> >
> > On Tue, Apr 19, 2016 at 2:43 PM, Jason Ginchereau <
> [email protected] <javascript:;>>
> > wrote:
> >
> > > We've had a few customers complain that the dev inner loop for Cordova
> > > apps is slow compared to native app development. So recently I've been
> > > looking at ways to optimize it. The two largest pieces of a Cordova
> > > build are "prepare" and "compile" phases. While there's not much we
> > > can realistically do to speed up the native-code compilation (in which
> > > gradle/xcodebuild/etc is invoked), it's clear that the prepare phase
> > > is not nearly as efficient as it could be. So I opened a JIRA for
> > > that, and I have a solution in the works that I want to get feedback
> on.
> > >
> > > CB-11117: Preparing platforms should skip copying files which haven't
> > > changed<https://na01.safelinks.protection.outlook.com/?url=https%3a%2f
> > > %2fissues.apache.org%2fjira%2fbrowse%2fCB-11117&data=01%7c01%7cjasongi
> > > n%40microsoft.com%7c297f714a60a94c3f258108d3689ff306%7c72f988bf86f141a
> > > f91ab2d7cd011db47%7c1&sdata=E2Ww9LusEmVkUgjXPPGnxcGz%2fMH8fWruqGWUrLXq
> > > KRk%3d> Many cordova CLI commands include a "prepare" operation,
> > > including 'cordova build', 'cordova run', 'cordova plugin add', and
> > > more. Every time each of those commands runs, the target platform is
> > > "prepared", which involves copying all files from [<project>/www,
> > > <project>/platforms/<platform>/platform_www,
> > > <project>/merges/<platform>] to the platform's target www folder, as
> > > well as copying a bunch of icons and splash screens to
> platform-specific
> > locations.
> > >
> > > For the very first prepare of a platform, all that file copying is
> > > necessary. But most of the time after that most of the files being
> > > copied have not changed and therefore don't really need to be copied
> > > again. So the typical developer inner loop (edit a few source files,
> > > build and run the app, repeat) is a lot slower than it could be for a
> > > Cordova project, especially one that includes a significant number of
> > > source files or resources.
> > >
> > > Instead, Cordova should be smart enough to skip copying of files that
> > > haven't changed, based on their last-modified timestamp. But there
> > > should still be a way to force a clean/full/non-incremental copy if
> > > desired. To preserve compatibility with all possible existing
> > > workflows, I'm leaning toward keeping the full copy as the default
> > > behavior, and enabling the optimization only with a new --incremental
> > > flag, at least initially. If we find the incremental option is working
> > > well for everyone, we can promote that behavior to default in a future
> > major version update.
> > >
> > > See PRs here for implementation of this idea...
> > > https://github.com/apache/cordova-lib/pull/429: Add FileUpdater module
> > > to cordova-common
> > > https://github.com/apache/cordova-android/pull/295: Use FileUpdater to
> > > optimize prepare for android platform I'll submit PRs for cordova-ios
> > > and cordova-windows platforms soon, as well as a cordova-cli change to
> > > enable the optimization via a new --incremental flag (assuming we
> > > don't want to make it the default behavior).
> > >
> > > Jason
> > >
> > >
> >
>

Reply via email to