Reverse Function Performance

Benchmark created on


Test runner

Ready to run.

Testing in
TestOps/sec
increment/decrement arrays
function reverse_1 (s) {
  s = s.split('');
  var t = [];

  for (var i = s.length - 1, j = 0; i >= 0; i--, j++) {
    t[j] = s[i];
  }

  return t.join('');
};
ready
push array
function reverse_2 (s) {
  s = s.split('');
  var t = [];
  
  for (var i = s.length - 1; i >= 0; i--)
    t.push(s[i]);

  return t.join('');
};
ready
in-built
function reverse_3 (s) {
  return s.split('').reverse().join('');
};
ready
substring
function reverse_4 (s) {
  var i = s.length,
      t = '';

  while (i > 0) {
    t += s.substring(i - 1, i);
    i--;
  }

  return t;
};
ready
concat
function reverse_5 (s) {
  var t = '';

  for (var i = s.length - 1; i >= 0; i--)
    t += s[i];
  
  return t;
};
ready
for loop - no function
function reverse_6 (s) {
  for (var i = s.length - 1, t = ''; i >= 0; t += s[i--]) { }
  return t;
};
ready
push array - char at
function reverse_7 (s) {
  var t = [];

  for (var i = 0, len = s.length; i <= len; i++)
    t.push(s.charAt(len - i));

  return t.join('');
};
ready
recursive - substr/charAt
function reverse_8 (s) {
  return (s === '') ? '' : reverse_8(s.substr(1)) + s.charAt(0); 
};
ready
recursive, concat
function reverse_9 (s) {
  function reverse (s, len, str) {
    return (len === 0) ? str : reverse(s, --len, (str += s[len]));
  };

  return reverse(s, s.length, '');
};
ready
char at - concat
function reverse_10 (s) {
  var t = '';

  for (var i = s.length - 1; i >= 0; i--)
    t += s.charAt(i);

  return t;
};
ready
half index split
function reverse_11 (s) {
  if (s.len < 1)
    return '';

  s = s.split('');
  
  var tmp,
      len = s.length,
      half_index = Math.floor(len / 2) - 1;

  for (var i = 0; i <= half_index; i++) {
    tmp = s[len - i - 1];
    s[len - i - 1] = s[i];
    s[i] = tmp;
  }
  
  return s.join('');
};
ready
sunstr - charAt 2
function reverse_12 (s) {
  if (s.length < 2)
    return s;

  return reverse_12(s.substr(1)) + s.charAt(0);
};
ready
recursive - half index
function reverse_13 (s) {
  if (s.length < 2)
    return s;

  var half_index = Math.ceil(s.length / 2);
  return reverse_13(s.substr(half_index)) + reverse_13(s.substr(0, half_index));
};
ready

Revisions

You can edit these tests or add more tests to this page by appending /edit to the URL.