not nested as in we're using it in synchronous way ?
On Fri, Aug 2, 2013 at 12:30 PM, Michal Mocny <[email protected]> wrote: > Just did a few quick tests: while shelljs exec may be slow, seems we are > not using it in a nested way (which seems quite obvious). > > I wrote a quick benchmark to: > > cordova plugin ls > cordova platform ls > cordova prepare > > in a loop a bunch of times and see almost zero time difference replacing > shelljs with shelljs-ffi. I would imagine that means very little benefit > to replacing with child_process as well, at least for a perf standpoint. > It may still be worth doing for other benefits, but in the interest of > trying to make cordova-cli faster, I'm going to benchmark for other > bottlenecks. > > -Michal > > > On Thu, Jul 25, 2013 at 1:57 PM, Filip Maj <[email protected]> wrote: > >> cheers >> >> On 7/25/13 10:54 AM, "Andrew Grieve" <[email protected]> wrote: >> >> >Issues created. >> >https://issues.apache.org/jira/browse/CB-4398 >> >https://issues.apache.org/jira/browse/CB-4397 >> > >> > >> >On Thu, Jul 25, 2013 at 1:41 PM, Filip Maj <[email protected]> wrote: >> > >> >> Chalk it up as another issue. >> >> >> >> Feel free to help out with CLI/plugman tagged issues everyone. Lots of >> >> work there! ;) >> >> >> >> On 7/25/13 10:39 AM, "Anis KADRI" <[email protected]> wrote: >> >> >> >> >xD. +1 for child_process because it comes with node too eh :) >> >> > >> >> >On Thu, Jul 25, 2013 at 10:36 AM, Filip Maj <[email protected]> wrote: >> >> >> Changed your named to Gmail now huh Jesse? >> >> >> >> >> >> On 7/25/13 10:32 AM, "Gmail" <[email protected]> wrote: >> >> >> >> >> >>>+1 to child_process or leave it slow. >> >> >>> >> >> >>>Sent from my iPhone >> >> >>> >> >> >>>On Jul 25, 2013, at 10:28 AM, Filip Maj <[email protected]> wrote: >> >> >>> >> >> >>>> Yeah that¹s how a lot of the "hey this works native on windows" >> >> >>>>modules >> >> >>>>on >> >> >>>> npm works: they have to compile it D: >> >> >>>> >> >> >>>> On 7/25/13 10:26 AM, "Andrew Grieve" <[email protected]> wrote: >> >> >>>> >> >> >>>>> just tried it, and it "does", but only if you have both python and >> >> >>>>>visual >> >> >>>>> studio installed on your machine. Guess it builds the .dll at npm >> >> >>>>>install >> >> >>>>> time :( >> >> >>>>> >> >> >>>>> >> >> >>>>> On Thu, Jul 25, 2013 at 1:23 PM, Anis KADRI <[email protected] >> > >> >> >>>>>wrote: >> >> >>>>> >> >> >>>>>> https://github.com/rbranson/node-ffi >> >> >>>>>> >> >> >>>>>> looks like it does >> >> >>>>>> >> >> >>>>>> On Thu, Jul 25, 2013 at 10:14 AM, Filip Maj <[email protected]> >> >>wrote: >> >> >>>>>>> Does it work with Windows? >> >> >>>>>>> >> >> >>>>>>> On 7/25/13 10:11 AM, "Andrew Grieve" <[email protected]> >> >>wrote: >> >> >>>>>>> >> >> >>>>>>>> Looks like the fix is pretty easy: >> >> >>>>>>>> >> >> >>>>>>>> agrieve@agrieve-macbookpro ~/git/cordova/tmp$ time node go3.js >> >> >>>>>>>> went 0 times >> >> >>>>>>>> went 10 times >> >> >>>>>>>> went 20 times >> >> >>>>>>>> went 30 times >> >> >>>>>>>> went 40 times >> >> >>>>>>>> went 50 times >> >> >>>>>>>> went 60 times >> >> >>>>>>>> went 70 times >> >> >>>>>>>> went 80 times >> >> >>>>>>>> went 90 times >> >> >>>>>>>> went 100 times >> >> >>>>>>>> >> >> >>>>>>>> real 0m0.444s >> >> >>>>>>>> user 0m0.266s >> >> >>>>>>>> sys 0m0.158s >> >> >>>>>>>> >> >> >>>>>>>> >> >> >>>>>>>> All I did was replace "shelljs" with "shelljs-ffi". >> >> >>>>>>>> >> >> >>>>>>>> >> >> >>>>>>>> On Thu, Jul 25, 2013 at 12:53 PM, Filip Maj <[email protected]> >> >> wrote: >> >> >>>>>>>> >> >> >>>>>>>>> Cool, nice work. >> >> >>>>>>>>> >> >> >>>>>>>>> We could either try to contribute to shelljs or rip it out >> >>and go >> >> >>>>>> all >> >> >>>>>>>>> child process all the time >> >> >>>>>>>>> >> >> >>>>>>>>> In any case I think this bench should be submitted to shelljs >> >> >>>>>>>>>repo. >> >> >>>>>>>>> @r2r, >> >> >>>>>>>>> dude who maintains it, would probably like to know >> >> >>>>>>>>> >> >> >>>>>>>>> On 7/25/13 9:50 AM, "Andrew Grieve" <[email protected]> >> >> wrote: >> >> >>>>>>>>> >> >> >>>>>>>>>> One reason: shelljs.exec() >> >> >>>>>>>>>> >> >> >>>>>>>>>> Did a test to see how many times I could execute "true". 9 >> >> >>>>>>>>>>seconds >> >> >>>>>> vs >> >> >>>>>>>>> .5 >> >> >>>>>>>>>> seconds! >> >> >>>>>>>>>> >> >> >>>>>>>>>> >> >> >>>>>>>>>> agrieve@agrieve-macbookpro ~/git/cordova/tmp$ time node >> >> >>>>>> shelljstest.js >> >> >>>>>>>>>> went 0 times >> >> >>>>>>>>>> went 10 times >> >> >>>>>>>>>> went 20 times >> >> >>>>>>>>>> went 30 times >> >> >>>>>>>>>> went 40 times >> >> >>>>>>>>>> went 50 times >> >> >>>>>>>>>> went 60 times >> >> >>>>>>>>>> went 70 times >> >> >>>>>>>>>> went 80 times >> >> >>>>>>>>>> went 90 times >> >> >>>>>>>>>> went 100 times >> >> >>>>>>>>>> >> >> >>>>>>>>>> real 0m8.873s >> >> >>>>>>>>>> user 0m10.941s >> >> >>>>>>>>>> sys 0m6.005s >> >> >>>>>>>>>> agrieve@agrieve-macbookpro ~/git/cordova/tmp$ time node >> >> >>>>>>>>>> child_processtest.js >> >> >>>>>>>>>> went 10 times >> >> >>>>>>>>>> went 20 times >> >> >>>>>>>>>> went 30 times >> >> >>>>>>>>>> went 40 times >> >> >>>>>>>>>> went 50 times >> >> >>>>>>>>>> went 60 times >> >> >>>>>>>>>> went 70 times >> >> >>>>>>>>>> went 80 times >> >> >>>>>>>>>> went 90 times >> >> >>>>>>>>>> went 100 times >> >> >>>>>>>>>> >> >> >>>>>>>>>> real 0m0.470s >> >> >>>>>>>>>> user 0m0.278s >> >> >>>>>>>>>> sys 0m0.228s >> >> >>>>>>>>>> >> >> >>>>>>>>>> >> >> >>>>>>>>>> Here's the code: >> >> >>>>>>>>>> shelljstest.js >> >> >>>>>>>>>> >> >> >>>>>>>>>> var shjs = require('shelljs'); >> >> >>>>>>>>>>> for (var i = 0; ; ++i) { >> >> >>>>>>>>>>> shjs.exec('true'); >> >> >>>>>>>>>>> if ((i / 10 | 0) == i / 10) { >> >> >>>>>>>>>>> console.log('went ' + i + ' times'); >> >> >>>>>>>>>>> } >> >> >>>>>>>>>>> if (i == 100) { >> >> >>>>>>>>>>> process.exit(0); >> >> >>>>>>>>>>> } >> >> >>>>>>>>>>> } >> >> >>>>>>>>>> >> >> >>>>>>>>>> >> >> >>>>>>>>>> child_processtest.js >> >> >>>>>>>>>> >> >> >>>>>>>>>> var child = require('child_process'); >> >> >>>>>>>>>>> var i = 0; >> >> >>>>>>>>>>> function go() { >> >> >>>>>>>>>>> child.exec('true', function() { >> >> >>>>>>>>>>> ++i; >> >> >>>>>>>>>>> if ((i / 10 | 0) == i / 10) { >> >> >>>>>>>>>>> console.log('went ' + i + ' times'); >> >> >>>>>>>>>>> } >> >> >>>>>>>>>>> if (i == 100) { >> >> >>>>>>>>>>> process.exit(0); >> >> >>>>>>>>>>> } >> >> >>>>>>>>>>> go(); >> >> >>>>>>>>>>> }); >> >> >>>>>>>>>>> } >> >> >>>>>>>>>>> go(); >> >> >>>> >> >> >> >> >> >> >> >> >>
