iamaamir

Fuck External Libs

Jul 6th, 2019
123
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /*
  2.  
  3. Author: Aamir khan (github.com/iamaamir)
  4. 06/Jul/2019/(11.42:PM)
  5.  
  6. ### ENV
  7.   Node v10.15.3
  8.   Ubuntu 18
  9.   Intel Core i5
  10.  
  11.  
  12. ### LOCAL SYSTEM RESULT
  13.   Pure for loop: 17.150ms
  14.   Functional Js: 691.488ms
  15.   Ramda compose: 667.509ms
  16.   Pure Ramda compose: 9099.204ms
  17.   Rx pipe: 513.282ms
  18.   Pure js lambda with compose: 165.855ms
  19.  
  20.   ---results---
  21.  
  22.   loop result 100023979111894
  23.   func result 100023979111894
  24.   Ramda result 100023979111894
  25.   Pure Ramda result 100023979111894
  26.   Rx result 100023979111894
  27.   Pure lambda result 100023979111894
  28.  
  29. */
  30.  
  31. const R               = require('ramda');
  32. const Rx              = require('rxjs');
  33. const { reduce, map } = require('rxjs/operators');
  34.  
  35. const RANGE = 10000000;
  36. const values = Int32Array.from({ length: RANGE }, _ => Math.random() * RANGE);
  37.  
  38.  
  39. console.time('Pure for loop');
  40. let r = 0;
  41. for (let i = 0; i < RANGE; ++i) r += values[i] * 2 + 4;
  42. console.timeEnd('Pure for loop');
  43.  
  44.  
  45.  
  46.  
  47.  
  48. console.time('Functional Js');
  49. const r0 = values
  50.     .map(x => x + 1)
  51.     .map(x => x * 2)
  52.     .map(x => x + 2)
  53.     .reduce((a, b) => a + b, 0);
  54. console.timeEnd('Functional Js');
  55.  
  56.  
  57.  
  58.  
  59. console.time('Ramda compose');
  60. const r1 = R.compose(
  61.     R.reduce((a, b) => a + b, 0),
  62.     R.map(x => x + 2),
  63.     R.map(x => x * 2),
  64.     R.map(x => x + 1),
  65. )(values);
  66. console.timeEnd('Ramda compose');
  67.  
  68.  
  69.  
  70.  
  71. console.time('Pure Ramda compose');
  72. const r11 = R.compose(
  73.     R.sum,
  74.     R.map(R.add(2)),
  75.     R.map(R.multiply(2)),
  76.     R.map(R.inc),
  77. )(values);
  78. console.timeEnd('Pure Ramda compose');
  79.  
  80.  
  81.  
  82.  
  83. console.time('Rx pipe');
  84. let rx = 0;
  85. Rx.from(values).pipe(
  86.     map(x => x + 1),
  87.     map(x => x * 2),
  88.     map(x => x + 2),
  89.     reduce((a, b) => a + b, 0),
  90. ).subscribe(r => { rx = r });
  91. console.timeEnd('Rx pipe');
  92.  
  93.  
  94.  
  95.  
  96. console.time('Pure js lambda with compose');
  97. const t = x => x + 2;
  98. const u = x => x * 2;
  99. const v = x => x + 1;
  100. const r2 = values.reduce((a, b) => a + t(u(v(b))), 0);
  101. console.timeEnd('Pure js lambda with compose');
  102.  
  103.  
  104.  
  105. // POC
  106. console.log('\n---results---\n');
  107. console.log('loop result', r);
  108. console.log('func result', r0);
  109. console.log('Ramda result', r1);
  110. console.log('Pure Ramda result', r11);
  111. console.log('Rx result', rx);
  112. console.log('Pure lambda result', r2);
Add Comment
Please, Sign In to add comment