Advertisement
Fruch

Untitled

May 8th, 2017
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.26 KB | None | 0 0
  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. res.concat(cur);
  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 < 1000000; 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