I'll do some work on a line separated string. Which one will be faster, to split the text via String.split first and then walk on the resultant array or directly walk the whole text via a reg exp and construct the final array on the way?
3 Answers
Well, the best way to get your answer is to just take 2 minutes and write a loop that does it both ways a thousand times and check firebug to see which one is faster ;)
I've had to optimize a lot of string munging while working on MXHR and in my experience, plain String methods are significantly faster than RegExps in current browsers. Use RegExps on the shortest Strings possible and do everything you possibly can with String methods.
For example, I use this little number in my current code:
var mime = mimeAndPayload.shift().split('Content-Type:', 2)[1].split(";", 1)[0].replace(' ', '');
It's ugly as hell, but believe it or not it's significantly faster than the equivalent RegExp under high load.
-
1I considered testing via Firebug but actually didn't trust the time measurement of JS. Thank you very much for your answer with a supporting example ;)– BYKCommented Jun 8, 2009 at 20:16
-
So don't trust firebug - create and compare a couple of date objects as well– annakataCommented Jun 8, 2009 at 20:18
-
Well I do not trust the JS Date objects itself since when(some time ago) I tried to measure performance, although it claimed it was milliseconds precise, it was always returning multiples of seconds. This is why I do not trust it.– BYKCommented Jun 8, 2009 at 20:21
-
1Note also that different implementations of JavaScript (Firefox, Internet Explorer, WebKit, etc.. ) will have different perforamnces. Commented Jun 8, 2009 at 20:54
-
1I know this question is old, but for other people's sakes. The
performance
object performs way better than theDate
object for timing. Still gives some bogus data (like zero when it obviously wasn't zero) so you can filter those out. I have found this to be the easiest way to narrow down speeds of specific implementation choices.– tkelleheCommented Nov 18, 2015 at 12:21
While this is 2½ years late, hopefully this helps shed some light on the matter for any future viewers: https://jsperf.app/split-join-vs-regex-replace (Includes benchmarks results for multiple browsers, as well the functional benchmark code itself)
-
Ran it twice, in the first test, split won and in the second test, regex won. Commented Jun 23, 2020 at 8:04
-
13@Andrew Odri - Link seems broken! Please update! :-) Commented Mar 15, 2021 at 20:52
-
1
I expect that using split() will be much faster. It depends upon many specifics, number of lines vs. length, complexity of regex, etc.
-
Thanks for taking time to answer. I also expected the native methods to be faster but nothing can be better than an experience for this question IMO. Thanks anyway =)– BYKCommented Jun 8, 2009 at 20:17
-
1That answer IS based on experience :) as dfltr said, you need to experiment for your particular case. Commented Jun 8, 2009 at 20:50
-
Well the problem is, I do not know the string size and the regexp will be a simple \n|\r matcher if I use regexp. Any more suggestions? =) (BTW sorry for thinking it was an estimate ;))– BYKCommented Jun 8, 2009 at 20:54
-
-
@KevinBeal Not the exact same code as OP, but try this as an example: measurethat.net/Benchmarks/Show/7822/0/strmatch-vs-strsplit Commented Jan 26, 2022 at 21:55