JS: Fastest way to create all substrings starting at index 0

javascript, performance, substring

Solution

In your benchmark `slice` is faster because `text`'s length decreases each iteration.

If you take a look at `substr`, `substring` and `slice` implementations in V8 you will realize that they use the same internal function `%_SubString`. They only manipulate its parameters at a negligible cost.

- `String.prototype.slice`: https://github.com/v8/v8/blob/master/src/string.js#L567

- `String.prototype.substring`: https://github.com/v8/v8/blob/master/src/string.js#L713

- `String.prototype.substr`: https://github.com/v8/v8/blob/master/src/string.js#L748

Problem

So I'm looking for a way to generate all possible substrings from a larger String that start at index 0. So let's say we have ``` var a = "test"; ``` Then I want to generate ``` "test", "tes", "te" and "t" ``` I imagine doing this with substring, substr or slice, and I tested them here: http://jsperf.com/loop-over-string Now the slice method seems almost twice as fast as the other methods. Can anybody explain that? Or is there even faster ways to do this?

Original source