mirror of
https://gerrit.wikimedia.org/r/mediawiki/extensions/CodeMirror
synced 2024-11-23 22:03:28 +00:00
cfecfbc099
I was wondering why the performance when editing wikitext is still so bad, and profiled it again. Turns out StringStream.match() is still the bottleneck (even if already 100 times better than before Icbb1122). The method is called with many different patterns from mode/mediawiki/mediawiki.js. I profiled them individually and found a single outlier. The idea is the same as in Icbb1122. A pattern that is able to find something *in* a string is doing nothing but wasting time, as StringStream.match() ignores every result that is not at the start of the string. The change adds the missing ^ anchor and wraps the regex pattern from mw.config.get( 'wgUrlProtocols' ) (that is something like "ftp:\/\/|http:\/\/|https:\/\/|…") in (?:…), which is a non-matching group. This is necessary because of the | in the pattern. The result is a pattern that looks like /^(?:…|…|…)/i. I remember looking at this code while working on Icbb1122, but didn't include it in the patch, and then forgot about it. Bug: T270237 Bug: T270317 Change-Id: Iea2fd116b68704c3186b0edf965006cc7c6eda82 |
||
---|---|---|
.phan | ||
i18n | ||
includes | ||
resources | ||
tests | ||
.eslintrc.json | ||
.gitignore | ||
.gitreview | ||
.phpcs.xml | ||
.stylelintrc.json | ||
CODE_OF_CONDUCT.md | ||
composer.json | ||
COPYING | ||
extension.json | ||
Gruntfile.js | ||
package-lock.json | ||
package.json |