Toggle navigation
MeasureThat.net
Create a benchmark
Tools
Feedback
FAQ
Register
Log In
Run results for:
findMatchGroups old vs new
Go to the benchmark
Embed
Embed Benchmark Result
Run details:
User agent:
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36
Browser:
Chrome 126
Operating system:
Mac OS X 10.15.7
Device Platform:
Desktop
Date tested:
one year ago
Test name
Executions per second
findMatchGroupsOld
1561314.6 Ops/sec
findMatchGroupsNew
6144338.5 Ops/sec
Script Preparation code:
var a = 'abcdefghijklmnopqrstuvwxyz'; var b = 'NOP'; var locale = 'en-US' ///////////////////////////////////////////////////////////////////////////////////// var BACKSLASH = '\\'; var escapeMap = new Map( [ '\\', '^', '$', '*', '+', '?', '(', ')', '[', ']', '{', '}', '=', ':', '!', '|', ].map(char => [char, `${BACKSLASH}${char}`]) ); var escapeRegExp = (searchPhrase) => [...searchPhrase] .map(character => escapeMap.get(character) || character) .join(''); var findMatchGroupsOld = ( searchPhrase, valueToSearchOn ) => { const safeSearchPhrase = escapeRegExp(searchPhrase); const searchPhraseRegExp = new RegExp(`(.+)?(${safeSearchPhrase})(.+)?`, 'i'); const match = valueToSearchOn.match(searchPhraseRegExp); if (match) { const [, preFind = '', find = '', postFind = ''] = match; return [preFind, find, postFind]; } return [valueToSearchOn, '', '']; }; ///////////////////////////////////////////////////////////////////////////////////// var localeIndexOfLowercase = (value, searchPhrase, locale) => { const searchPhraseLowercase = searchPhrase.toLocaleLowerCase(locale); return value.toLocaleLowerCase(locale).indexOf(searchPhraseLowercase); }; var findMatchGroupsNew = (value, searchPhrase, locale) => { const index = localeIndexOfLowercase(value, searchPhrase, locale); const lastIndex = index + searchPhrase.length; if (index === -1) return { preMatch: value, match: '', postMatch: '' }; return { preMatch: value.slice(0, index), match: value.slice(index, lastIndex), postMatch: value.slice(lastIndex), }; };
Tests:
findMatchGroupsOld
findMatchGroupsOld(b, a)
findMatchGroupsNew
findMatchGroupsNew(a, b)