Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- Author: Aamir khan (github.com/iamaamir)
- 06/Jul/2019/(11.42:PM)
- ### ENV
- Node v10.15.3
- Ubuntu 18
- Intel Core i5
- ### LOCAL SYSTEM RESULT
- Pure for loop: 17.150ms
- Functional Js: 691.488ms
- Ramda compose: 667.509ms
- Pure Ramda compose: 9099.204ms
- Rx pipe: 513.282ms
- Pure js lambda with compose: 165.855ms
- ---results---
- loop result 100023979111894
- func result 100023979111894
- Ramda result 100023979111894
- Pure Ramda result 100023979111894
- Rx result 100023979111894
- Pure lambda result 100023979111894
- */
- const R = require('ramda');
- const Rx = require('rxjs');
- const { reduce, map } = require('rxjs/operators');
- const RANGE = 10000000;
- const values = Int32Array.from({ length: RANGE }, _ => Math.random() * RANGE);
- console.time('Pure for loop');
- let r = 0;
- for (let i = 0; i < RANGE; ++i) r += values[i] * 2 + 4;
- console.timeEnd('Pure for loop');
- console.time('Functional Js');
- const r0 = values
- .map(x => x + 1)
- .map(x => x * 2)
- .map(x => x + 2)
- .reduce((a, b) => a + b, 0);
- console.timeEnd('Functional Js');
- console.time('Ramda compose');
- const r1 = R.compose(
- R.reduce((a, b) => a + b, 0),
- R.map(x => x + 2),
- R.map(x => x * 2),
- R.map(x => x + 1),
- )(values);
- console.timeEnd('Ramda compose');
- console.time('Pure Ramda compose');
- const r11 = R.compose(
- R.sum,
- R.map(R.add(2)),
- R.map(R.multiply(2)),
- R.map(R.inc),
- )(values);
- console.timeEnd('Pure Ramda compose');
- console.time('Rx pipe');
- let rx = 0;
- Rx.from(values).pipe(
- map(x => x + 1),
- map(x => x * 2),
- map(x => x + 2),
- reduce((a, b) => a + b, 0),
- ).subscribe(r => { rx = r });
- console.timeEnd('Rx pipe');
- console.time('Pure js lambda with compose');
- const t = x => x + 2;
- const u = x => x * 2;
- const v = x => x + 1;
- const r2 = values.reduce((a, b) => a + t(u(v(b))), 0);
- console.timeEnd('Pure js lambda with compose');
- // POC
- console.log('\n---results---\n');
- console.log('loop result', r);
- console.log('func result', r0);
- console.log('Ramda result', r1);
- console.log('Pure Ramda result', r11);
- console.log('Rx result', rx);
- console.log('Pure lambda result', r2);
Add Comment
Please, Sign In to add comment