This pattern is fine for an async library helper but I doubt that people
will be ready to write all their loops like this. I'm just thinking of the
poor guy who's going to maintain this kind of code written by someone else.
On Thursday, April 12, 2012 10:51:01 PM UTC+2, Tim Caswell wrote:
>
> Something productive came out of this thread. I learned the name of the
> trampoline technique and came up with a hand-written version of the
> benchmark that's 4x faster than the streamline-js version.
>
> var count = 1000000;
> function bench(cb) {
> var total = 0;
> function loop(i) {
> var async;
> while (async !== true) {
> async = undefined;
> if (i === count) {
> cb(null, total);
> } else {
> load(__dirname + '/benchCallbacks.js', function(err, data) {
> if (err) return cb(err);
> total += data.length;
> if (async) {
> loop(i + 1);
> } else {
> async = false;
> i++;
> }
> });
> }
> if (async !== false) {
> async = true;
> }
> }
> }
> loop(0);}
>
> Here are the speed numbers I'm getting on my machine with my new
> trampoline style version asbenchCallbacks2.js.
>
> tim ~/gist-2362015 $ uname -a
> Linux touchsmart 3.2.13-1-ARCH #1 SMP PREEMPT Sat Mar 24 09:10:39 CET 2012
> x86_64 Intel(R) Core(TM) i7-2600 CPU @ 3.40GHz GenuineIntel GNU/Linux
> tim ~/gist-2362015 $ node benchCallbacks.js
> hit=999999, missed=1, result=805000000
> elapsed: 1297
> tim ~/gist-2362015 $ _node benchStreamline
> hit=999999, missed=1, result=805000000
> elapsed: 1001
> tim ~/gist-2362015 $ _node --fibers benchStreamline
> hit=999999, missed=1, result=805000000
> elapsed: 180
> tim ~/gist-2362015 $ node benchCallbacks2.js
> hit=999999, missed=1, result=805000000
> elapsed: 308
>
>
> Most applications won't notice the speed differences here, but I do
> appreciate learning a new technique I'm sure to use in the future.
>
>
> On Thu, Apr 12, 2012 at 3:36 PM, Mikeal Rogers <[email protected]>wrote:
>
>> How are we defining aggression?
>>
>> To me, the same 5 people offering the same answer on every related
>> thread, representing nearly 60% of the traffic in that thread, for an
>> approach that has by any available measure less than 2% of the community
>> adopting it is **very aggressive**.
>>
>> -Mikeal
>>
>> On Apr 12, 2012, at April 12, 20121:33 PM, Marco Rogers wrote:
>>
>> Thanks for the backhanded support Axel :)
>>
>> Since when can we not make general statements once they've proven
>> themselves to be generally true? How would we ever have best practices if
>> nothing ever presented itself as best in the general sense?
>>
>> :Marco
>>
>> On Thursday, April 12, 2012 7:48:13 AM UTC-7, Axel Kittenberger wrote:
>>>
>>> > JavaScript is asynchronous, Node.js is asynchronous, everything feels
>>> > natural (and fibers don't).
>>>
>>> "Everything feels natural"... now thats a scientific argument how
>>> something "feels"?
>>>
>>> I wont go in this benchmark gaggle, but I agree with Marco Roger, the
>>> level of agression from the sync-haters is ridiculous. And both sides
>>> eider gaggle around benchmarks, or throw in baseless general
>>> statements like: "When you create an abstraction layer, it's almost
>>> always slower.". Thats an argument in 2012? Haven't decades of
>>> compilers and optimizers tought us (I'm looking at the Assembler vs. C
>>> arguments back in the 1970s-1980s) that eventually a compiler/optimize
>>> can work way beyond human abilities to micro-optimize things, and we'd
>>> rather work on a higher level developing solutions instead of dealing
>>> with the minuscule things how the electrons are moved around in the
>>> most efficient way?
>>>
>>> So please everybody get a cool head. Syncs are not going to kill you,
>>> neither is anybody going to be forced to use them, neither is async
>>> everything that uber cool what you think it is, neither is it not
>>> going to change the live of everybody.
>>>
>>>
>>>
>> --
>> Job Board: http://jobs.nodejs.org/
>> Posting guidelines:
>> https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines
>> You received this message because you are subscribed to the Google
>> Groups "nodejs" group.
>> To post to this group, send email to [email protected]
>> To unsubscribe from this group, send email to
>> [email protected]
>> For more options, visit this group at
>> http://groups.google.com/group/nodejs?hl=en?hl=en
>>
>>
>> --
>> Job Board: http://jobs.nodejs.org/
>> Posting guidelines:
>> https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines
>> You received this message because you are subscribed to the Google
>> Groups "nodejs" group.
>> To post to this group, send email to [email protected]
>> To unsubscribe from this group, send email to
>> [email protected]
>> For more options, visit this group at
>> http://groups.google.com/group/nodejs?hl=en?hl=en
>>
>
>
--
Job Board: http://jobs.nodejs.org/
Posting guidelines:
https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines
You received this message because you are subscribed to the Google
Groups "nodejs" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/nodejs?hl=en?hl=en