From: Gabriel Loiácono <32134586+loiacon@users.noreply.github.com> Date: Fri, 15 Nov 2019 22:48:01 +0000 (-0300) Subject: perf(compiler-core): add perf optimization to parseText (#458) X-Git-Tag: v3.0.0-alpha.0~191 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=2780e0df4cc0e8ab53b586e1cf63527eacc69a84;p=thirdparty%2Fvuejs%2Fcore.git perf(compiler-core): add perf optimization to parseText (#458) --- diff --git a/packages/compiler-core/src/parse.ts b/packages/compiler-core/src/parse.ts index 0b0cf83fa0..94b71be182 100644 --- a/packages/compiler-core/src/parse.ts +++ b/packages/compiler-core/src/parse.ts @@ -767,16 +767,19 @@ function parseInterpolation( function parseText(context: ParserContext, mode: TextModes): TextNode { __TEST__ && assert(context.source.length > 0) - const [open] = context.options.delimiters - // TODO could probably use some perf optimization - const endIndex = Math.min( - ...[ - context.source.indexOf('<', 1), - context.source.indexOf(open, 1), - mode === TextModes.CDATA ? context.source.indexOf(']]>') : -1, - context.source.length - ].filter(n => n !== -1) - ) + const endTokens = ['<', context.options.delimiters[0]] + if (mode === TextModes.CDATA) { + endTokens.push(']]>') + } + + let endIndex = context.source.length + for (let i = 0; i < endTokens.length; i++) { + const index = context.source.indexOf(endTokens[i], 1) + if (index !== -1 && endIndex > index) { + endIndex = index + } + } + __TEST__ && assert(endIndex > 0) const start = getCursor(context)