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();
>> >> >>>>
>> >> >>
>> >>
>> >>
>>
>>

Reply via email to