mdgriffith / elm-optimize-level-2

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Add replacement for String.startsWith

jfmengels opened this issue · comments

I noticed that String.startsWith can be very slow for large strings when the str does not contain the prefix. The reason being the function actually does a str.indexOf call which will go through the entire function as long as it doesn't find anything.

So I tried benchmarking alternatives.

I tried using the ES2015 startsWith, which is by far faster but doesn't work on IE.

And I also tried another version where we slice the string and compare that to the prefix.

Benchmark

Chrome

Firefox


What do you think of the idea of replacing String.startsWith? Does that sound good?

Maybe we can do something faster in JS where we compare every character one by one.

I also think similar improvements can be made for String.endsWith.

Maybe we can do something faster in JS where we compare every character one by one.

I just tested that and that is by far the fastest (even faster than the native startsWith in FF). The screenshots above now reflect that.