Mega trim test (v8)

Revision 8 of this benchmark created by Timo on


Description

Trim function

Added new trim27, which seems to beat native trim of Chrome!

Preparation HTML

<script>
function trim27a(str) {
    var c;
    for (var i = 0; i < str.length; i++) {
      c = str.charCodeAt(i);
      if (c == 32 || c == 10 || c == 13 || c == 9 || c == 12 || c == 11 || c == 160 || c == 5760 || c == 6158 || c == 8192 || c == 8193 || c == 8194 || c == 8195 || c == 8196 || c == 8197 || c == 8198 || c == 8199 || c == 8200 || c == 8201 || c == 8202 || c == 8232 || c == 8233 || c == 8239 || c == 8287 || c == 12288) continue;
      else break;
    }
    for (var j = str.length - 1; j >= i; j--) {
      c = str.charCodeAt(j);
      if (c == 32 || c == 10 || c == 13 || c == 9 || c == 12 || c == 11 || c == 160 || c == 5760 || c == 6158 || c == 8192 || c == 8193 || c == 8194 || c == 8195 || c == 8196 || c == 8197 || c == 8198 || c == 8199 || c == 8200 || c == 8201 || c == 8202 || c == 8232 || c == 8233 || c == 8239 || c == 8287 || c == 12288)  continue;
      else break;
    }
    return str.substring(i, j + 1);
  }

  function trim27(str) {
    var c;
    for (var i = 0; i < str.length; i++) {
      c = str.charCodeAt(i);
      if (c == 32 || c == 10 || c == 13 || c == 9 || c == 12) continue;
      else break;
    }
    for (var j = str.length - 1; j >= i; j--) {
      c = str.charCodeAt(j);
      if (c == 32 || c == 10 || c == 13 || c == 9 || c == 12) continue;
      else break;
    }
    return str.substring(i, j + 1);
  }

  function trim_native(str) {
    return str.trim(); // should throw is no such function
  }

  var inp = "    \n\n \n\n   a \n a\n  a\n    a\n   a  \n\t\ta\t\ta\njahsdkjahkjshdakjhsdkahskd akhsjdh akjshd kashdkajhsd kajshd \nkauyiuqhwep iasldk qpwoie ad  \n   askdjaslkdjaslkjdaoiur qowioqwhr aspodiquw ijasod iqwiue pqowipoqiw epoqiwpeo iaslkjdqur \t kjahsdkj hakshd\nkajhdk\nk as d  \t\n".split('\n');

  function e(f) {
    var x = [];
    for (i = 0; i < inp.length; i++) {
      x.push(f(inp[i]));
    }
    return x;
  }
</script>

Test runner

Ready to run.

Testing in
TestOps/sec
trim-native
e(trim_native);
ready
trim27
e(trim27);
ready
trim27a
e(trim27a);
ready

Revisions

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