substring vs split join

Benchmark created on


Setup

var NAMES = "foo bar baz a b c d e f g h i j k l m n o p q r s t u v w x y z 0 1 2 3 4 5 6 7 8 9 10".split(" ");
    NAMES.sort(function() {
      return 0.5 - Math.random();
    });
    
    var paths = NAMES.map(function(n) {
      var p = "";
      while (Math.random() < 0.9) {
        p += "/" + NAMES[Math.floor(Math.random() * NAMES.length)];
      }
      return p
    }).filter(function(i) {
      return i;
    });
    
    function noop() {}
    
    function test(func) {
      paths.forEach(func);
    }

Test runner

Ready to run.

Testing in
TestOps/sec
substring
test(function(path) {
  do {
    noop(path);

    path = path.substring(0, path.lastIndexOf("/"));
  } while (path);
})
ready
split
test(function(path) {
  var parts = path.split("/");
  for (var i = parts.length; i >= 0; i--, parts.pop()) {
    var path = parts.join("/");

    noop(path);
  }
})
ready

Revisions

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