Advertisement
Fruch

Untitled

May 8th, 2017
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function testForEach(array) {
  2.     array.reduce((res, cur) => {
  3.         if (Array.isArray(cur)) {
  4.             cur.forEach(i => res.push(i));
  5.         } else {
  6.             res.push(i);
  7.         }
  8.         return res;
  9.     });
  10. }
  11.  
  12. function testConcat(array) {
  13.     array.reduce((res, cur) => {
  14.         if (Array.isArray(cur)) {
  15.             cur.forEach(i => res.push(i));
  16.         } else {
  17.             res.push(i);
  18.         }
  19.         return res;
  20.     });
  21. }
  22.  
  23. function testSpread(array) {
  24.     array.reduce((list, i) => (Array.isArray(i) ? [...list, ...i] : [...list, i]), []);
  25. }
  26.  
  27. function measureTime(fun) {
  28.     console.time(fun.name);
  29.     fun(Array.prototype.slice.call(arguments, 1));
  30.     console.timeEnd(fun.name);
  31. }
  32.  
  33. function generateInput() {
  34.     let result = [];
  35.  
  36.     function generateMember() {
  37.         let rand = Math.random();
  38.         if (rand < 0.05) {
  39.             return new Array(5);
  40.         } else if (rand < 0.7) {
  41.             return rand;
  42.         } else {
  43.             return 'AAAAAAAAAAA';
  44.         }
  45.     }
  46.     for (let i = 0; i < 100000; i++) {
  47.         result.push(generateMember());
  48.     }
  49.     return result;
  50. }
  51.  
  52. let input = generateInput();
  53.  
  54.  
  55. measureTime(testForEach, input);
  56. measureTime(testSpread, input);
  57. measureTime(testConcat, input);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement