Advertisement
joric

left-pad vs array vs log(n)

Mar 24th, 2016
276
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. <script>
  2.  
  3. /*
  4. padString1 finished in 652 ms
  5. padString2 finished in 2619 ms
  6. padString3 finished in 17 ms
  7. */
  8.  
  9. function padString1(str, len, ch) {
  10.   var len = len - str.length;
  11.   var i = -1;
  12.   while (++i < len) {
  13.     str = ch + str;
  14.   }
  15.   return str;
  16. }
  17.  
  18. function padString2(str, len, ch) {
  19.   return Array(len + 1 - str.length).join(ch) + str;
  20. }
  21.  
  22.  
  23. function padString3 (str, len, ch) {
  24.   str = String(str);
  25.  
  26.   if (!ch && ch !== 0) ch = ' ';
  27.  
  28.   len = len - str.length;
  29.   if (len <= 0) return str;
  30.  
  31.   ch = ch + '';
  32.   var pad = '';
  33.   while (true) {
  34.     if (len & 1) pad += ch;
  35.     len >>= 1;
  36.     if (len) ch += ch;
  37.     else break;
  38.   }
  39.   return pad + str;
  40. }
  41.  
  42. var timer = function(name) {
  43.     var start = new Date();
  44.     return {
  45.         stop: function() {
  46.             var end  = new Date();
  47.             var time = end.getTime() - start.getTime();
  48.             console.log('Timer:', name, 'finished in', time, 'ms');
  49.         }
  50.     }
  51. };
  52.  
  53. var padIter = 50000;
  54. var padLen = 1000;
  55.  
  56. var t = timer('padString1');
  57.  
  58. for (var i=0; i<padIter; i++) {
  59.     var str = padString1("hello world", padLen, " ");
  60. //  console.log(str);
  61. }
  62.  
  63. t.stop();
  64.  
  65. var t = timer('padString2');
  66.  
  67. for (var i=0; i<padIter; i++) {
  68.     var str = padString2("hello world", padLen, " ");
  69. //  console.log(str);
  70. }
  71.  
  72. t.stop();
  73.  
  74. var t = timer('padString3');
  75.  
  76. for (var i=0; i<padIter; i++) {
  77.     var str = padString3("hello world", padLen, " ");
  78. //  console.log(str);
  79. }
  80.  
  81. t.stop();
  82.  
  83. </script>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement