bigeasy / cadence

A Swiss Army asynchronous control flow function for JavaScript.
https://bigeasy.github.io/cadence
MIT License
35 stars 7 forks source link

Do not push callback onto `vargs` in arity functions. #317

Closed bigeasy closed 3 years ago

bigeasy commented 9 years ago
 % node --version
v0.10.40
 % node benchmark/increment/call.js
 cadence call 1 x 1,739,783 ops/sec ±0.46% (102 runs sampled)
_cadence call 1 x 1,566,696 ops/sec ±0.47% (100 runs sampled)
 cadence call 2 x 1,734,668 ops/sec ±0.45% (99 runs sampled)
_cadence call 2 x 1,596,424 ops/sec ±0.30% (101 runs sampled)
 cadence call 3 x 1,737,186 ops/sec ±0.58% (102 runs sampled)
_cadence call 3 x 1,596,701 ops/sec ±0.30% (100 runs sampled)
 cadence call 4 x 1,740,067 ops/sec ±0.38% (102 runs sampled)
_cadence call 4 x 1,503,925 ops/sec ±0.44% (100 runs sampled)
Fastest is  cadence call 4, cadence call 1, cadence call 3, cadence call 2
 % node benchmark/increment/async.js
_cadence async 1 x 1,679,432 ops/sec ±0.55% (98 runs sampled)
 cadence async 1 x 1,653,664 ops/sec ±0.28% (99 runs sampled)
_cadence async 2 x 1,718,253 ops/sec ±0.38% (101 runs sampled)
 cadence async 2 x 1,640,169 ops/sec ±0.35% (100 runs sampled)
_cadence async 3 x 1,721,763 ops/sec ±0.22% (102 runs sampled)
 cadence async 3 x 1,649,294 ops/sec ±0.37% (96 runs sampled)
_cadence async 4 x 1,711,639 ops/sec ±0.27% (101 runs sampled)
 cadence async 4 x 1,645,413 ops/sec ±0.21% (102 runs sampled)
Fastest is _cadence async 3
 % node benchmark/increment/loop.js
 cadence loop 1 x 228,729 ops/sec ±0.44% (93 runs sampled)
_cadence loop 1 x 234,433 ops/sec ±0.37% (103 runs sampled)
 cadence loop 2 x 233,744 ops/sec ±0.24% (100 runs sampled)
_cadence loop 2 x 236,385 ops/sec ±0.26% (99 runs sampled)
 cadence loop 3 x 234,503 ops/sec ±0.19% (101 runs sampled)
_cadence loop 3 x 236,534 ops/sec ±0.28% (96 runs sampled)
 cadence loop 4 x 232,649 ops/sec ±0.24% (103 runs sampled)
_cadence loop 4 x 236,281 ops/sec ±0.31% (96 runs sampled)
Fastest is _cadence loop 3,_cadence loop 2,_cadence loop 4
 % node --version
v0.12.7
 % node benchmark/increment/call.js
 cadence call 1 x 2,167,569 ops/sec ±0.42% (100 runs sampled)
_cadence call 1 x 2,683,852 ops/sec ±0.28% (98 runs sampled)
 cadence call 2 x 2,133,205 ops/sec ±0.53% (100 runs sampled)
_cadence call 2 x 2,491,748 ops/sec ±0.41% (96 runs sampled)
 cadence call 3 x 2,048,719 ops/sec ±0.41% (97 runs sampled)
_cadence call 3 x 2,459,307 ops/sec ±0.25% (99 runs sampled)
 cadence call 4 x 2,051,639 ops/sec ±0.27% (103 runs sampled)
_cadence call 4 x 2,431,417 ops/sec ±0.23% (97 runs sampled)
Fastest is _cadence call 1
 % node benchmark/increment/async.js
_cadence async 1 x 1,975,069 ops/sec ±0.69% (97 runs sampled)
 cadence async 1 x 1,813,799 ops/sec ±0.27% (94 runs sampled)
_cadence async 2 x 2,059,681 ops/sec ±0.45% (97 runs sampled)
 cadence async 2 x 1,802,085 ops/sec ±0.34% (102 runs sampled)
_cadence async 3 x 2,096,828 ops/sec ±0.52% (98 runs sampled)
 cadence async 3 x 1,817,812 ops/sec ±0.46% (100 runs sampled)
_cadence async 4 x 2,013,641 ops/sec ±0.21% (103 runs sampled)
 cadence async 4 x 1,757,695 ops/sec ±0.40% (96 runs sampled)
Fastest is _cadence async 3
 % node benchmark/increment/loop.js
 cadence loop 1 x 149,233 ops/sec ±1.95% (88 runs sampled)
_cadence loop 1 x 124,200 ops/sec ±1.36% (92 runs sampled)
 cadence loop 2 x 100,194 ops/sec ±1.48% (81 runs sampled)
_cadence loop 2 x 99,256 ops/sec ±2.58% (87 runs sampled)
 cadence loop 3 x 85,469 ops/sec ±2.09% (83 runs sampled)
_cadence loop 3 x 71,685 ops/sec ±1.87% (91 runs sampled)
 cadence loop 4 x 80,097 ops/sec ±3.77% (82 runs sampled)
_cadence loop 4 x 73,550 ops/sec ±1.96% (82 runs sampled)
Fastest is  cadence loop 1

Actually, not doing so slows things down.

bigeasy commented 3 years ago

Appears to have been completed. If it slowed things down in Node.js 0.10 is probably doesn't in Node.js 10.0 or else I wouldn't have done it. Wishful thinking perhaps.