[ 
https://issues.apache.org/jira/browse/CB-13767?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16521926#comment-16521926
 ] 

Jon Rista commented on CB-13767:
--------------------------------

I think the main issue is that npm is called once per package. If you have 17 
plugins, then cordova-fetch shells out to npm 17 times, and does whatever else 
it does around each execution of npm each time. Calling npm once per package is 
extremely inefficient. You incur all of NPMs overhead, which these days 
generally amounts to the majority of it's runtime for a single package install, 
every time you install a package. You effectively lose all of the efficiency 
gains that NPM has implemented recently. Even if you check for plugins on disk 
first, that is really of no help in things like CI, which generally starts 
fresh with nothing installed, and is the primary case where the performance hit 
of cordova-fetch has been too much for us to bear. We can't be waiting 10-15 
minutes just for the plugins to install whenever we do a CI build. 

Is it not possible to do things in stages? Invoke NPM a single time, and have 
it install all dependencies...then run your verification checks after they have 
all installed, and deal with verification failures, and only the failures, on a 
one-off basis?

> Huge performance issues moving from cordova 6.5 to 8 due to cordova-fetch
> -------------------------------------------------------------------------
>
>                 Key: CB-13767
>                 URL: https://issues.apache.org/jira/browse/CB-13767
>             Project: Apache Cordova
>          Issue Type: Improvement
>          Components: cordova-lib
>            Reporter: Andrew Crites
>            Priority: Major
>
> This is for a project with a wide variety of plugins ... about 25. This may 
> be above average, but not extreme. I've updated the project from cordova 6.5 
> to cordova 8. Cordova 8 always uses {{cordova-fetch}} to install plugins, so 
> I can't opt out. Before, I was not using {{cordova-fetch}}.
> {code}
> $ time npx [email protected] platform add ios
>   23.85s user 9.26s system 130% cpu 25.414 total
> $ time npx cordova@8 platform add ios --nosave
>   402.44s user 61.94s system 119% cpu 6:28.09 total
> {code}
> That takes over 15 times longer. {{--nosave}} was used since this is the 
> default behavior for 6.5.
> For subsequent installations using {{--save}} (or default) the performance is 
> still like this.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to