diff --git a/dist/datamodel/parser/MdlParser.d.ts b/dist/datamodel/parser/MdlParser.d.ts index b7ee8925..25286c2c 100644 --- a/dist/datamodel/parser/MdlParser.d.ts +++ b/dist/datamodel/parser/MdlParser.d.ts @@ -5,4 +5,17 @@ import type { ParsedSlx } from './SlxParser.js'; */ export type ParsedMdl = ParsedSlx; export declare function parseMdl(buffer: ArrayBuffer, filename: string): ParsedMdl; +/** + * A mask style with its options cut off, `popup(a|b)` to `popup`, exactly as + * `style.replace(/\(.*$/, '')` cut them, on every input. + * + * With no `m` flag `$` is the end of the text, and `.` passes no line terminator (`\n`, + * `\r`, U+2028, U+2029), so the regex cut at the first `(` that no line terminator + * follows. It found that `(` by trying each in turn, and each try walked to the next + * line terminator before it failed, so a style of many `(` ahead of one cost their count + * times that walk. The scanner keeps a line break inside a quoted value and unescapes + * `\n` and `\r`, so a file puts one wherever it likes. The `(` the regex cut at is the + * first after the last line terminator, which five scans of the text find. + */ +export declare function styleWithoutOptions(style: string): string; //# sourceMappingURL=MdlParser.d.ts.map \ No newline at end of file diff --git a/dist/datamodel/parser/MdlParser.d.ts.map b/dist/datamodel/parser/MdlParser.d.ts.map index 2e08a0b3..5c38c398 100644 --- a/dist/datamodel/parser/MdlParser.d.ts.map +++ b/dist/datamodel/parser/MdlParser.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"MdlParser.d.ts","sourceRoot":"","sources":["../../../src/datamodel/parser/MdlParser.ts"],"names":[],"mappings":"AAqCA,OAAO,KAAK,EAAoC,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAQlF;;;GAGG;AACH,MAAM,MAAM,SAAS,GAAG,SAAS,CAAC;AAIlC,wBAAgB,QAAQ,CAAC,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,GAAG,SAAS,CAkDzE"} \ No newline at end of file +{"version":3,"file":"MdlParser.d.ts","sourceRoot":"","sources":["../../../src/datamodel/parser/MdlParser.ts"],"names":[],"mappings":"AAqCA,OAAO,KAAK,EAAoC,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAQlF;;;GAGG;AACH,MAAM,MAAM,SAAS,GAAG,SAAS,CAAC;AAIlC,wBAAgB,QAAQ,CAAC,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,GAAG,SAAS,CAkDzE;AAwxBD;;;;;;;;;;;GAWG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAUzD"} \ No newline at end of file diff --git a/dist/datamodel/parser/MdlParser.js b/dist/datamodel/parser/MdlParser.js index 4de529d2..99e157bc 100644 --- a/dist/datamodel/parser/MdlParser.js +++ b/dist/datamodel/parser/MdlParser.js @@ -775,6 +775,10 @@ function classicMask(block) { const values = (prop(block, 'MaskValueString') || '').split('|'); const names = []; const params = []; + // Whether a slot's style is an expression type, worked out once for each slot. Reading a + // style is linear in its length, and every declaration may name the same slot, so + // reading it once per declaration cost the product of the two. + const expression = new Map(); for (const decl of vars.split(';')) { const parsed = /^\s*([A-Za-z_]\w*)\s*=\s*([@&])(\d+)\s*$/.exec(decl); if (!parsed) { @@ -788,14 +792,36 @@ function classicMask(block) { if (evaluated !== '@' || slot < 0 || slot >= values.length) { continue; } - const type = (styles[slot] ?? 'edit').replace(/\(.*$/, '').trim().toLowerCase(); - if (!isExpressionMaskType(type)) { + let isExpression = expression.get(slot); + if (isExpression === undefined) { + const type = styleWithoutOptions(styles[slot] ?? 'edit').trim().toLowerCase(); + isExpression = isExpressionMaskType(type); + expression.set(slot, isExpression); + } + if (!isExpression) { continue; } params.push({ name, value: values[slot] }); } return { names, params }; } +/** + * A mask style with its options cut off, `popup(a|b)` to `popup`, exactly as + * `style.replace(/\(.*$/, '')` cut them, on every input. + * + * With no `m` flag `$` is the end of the text, and `.` passes no line terminator (`\n`, + * `\r`, U+2028, U+2029), so the regex cut at the first `(` that no line terminator + * follows. It found that `(` by trying each in turn, and each try walked to the next + * line terminator before it failed, so a style of many `(` ahead of one cost their count + * times that walk. The scanner keeps a line break inside a quoted value and unescapes + * `\n` and `\r`, so a file puts one wherever it likes. The `(` the regex cut at is the + * first after the last line terminator, which five scans of the text find. + */ +export function styleWithoutOptions(style) { + const from = Math.max(style.lastIndexOf('\n'), style.lastIndexOf('\r'), style.lastIndexOf('\u2028'), style.lastIndexOf('\u2029')) + 1; + const open = style.indexOf('(', from); + return open < 0 ? style : style.slice(0, open); +} /** * MaskStyleString split into one style per parameter — at the commas OUTSIDE the * parentheses, because a popup carries its options inside them (`popup(a|b)`) and an diff --git a/dist/datamodel/parser/MdlParser.js.map b/dist/datamodel/parser/MdlParser.js.map index d495dc0d..f8e573f8 100644 --- a/dist/datamodel/parser/MdlParser.js.map +++ b/dist/datamodel/parser/MdlParser.js.map @@ -1 +1 @@ -{"version":3,"file":"MdlParser.js","sourceRoot":"","sources":["../../../src/datamodel/parser/MdlParser.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"MdlParser.js","sourceRoot":"","sources":["../../../src/datamodel/parser/MdlParser.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/datamodel/parser/xmlEntrySplice.d.ts b/dist/datamodel/parser/xmlEntrySplice.d.ts index 284638c6..28be434a 100644 --- a/dist/datamodel/parser/xmlEntrySplice.d.ts +++ b/dist/datamodel/parser/xmlEntrySplice.d.ts @@ -3,6 +3,26 @@ export interface XmlSpan { offset: number; length: number; } +/** + * The text of the first P-node that `open` begins, exactly as + * `fragment.match(/

]*>([^<]*)<\/P>/)?.[1] ?? null` read it for + * `open` = `

` and the `<` after it, so a fragment holding many `open`s that no `>` + * follows soon cost their count times that walk: the square of a run that the + * file's bytes decide. + * + * At one start the regex can match only one way. `[^>]*` cannot pass a `>`, so its + * `>` is the first one after `open`; `[^<]*` cannot pass a `<`, so the text ends at + * the first `<` after that, where `

` either is or is not. `open` starts with its + * only `<` and holds no `>`, so a later start either lies before that `>` (and meets + * the same `>`, the same `<` and the same answer) or lies at or after that `<`. So + * the next start worth trying is the next `open` from there, and no character is + * read more than a bounded number of times. + */ +export declare function pNodeText(fragment: string, open: string): string | null; /** * Byte span of the … the selector identifies * (a bare string means "whichever entry has this name"). diff --git a/dist/datamodel/parser/xmlEntrySplice.d.ts.map b/dist/datamodel/parser/xmlEntrySplice.d.ts.map index 7d5caa1c..1070d043 100644 --- a/dist/datamodel/parser/xmlEntrySplice.d.ts.map +++ b/dist/datamodel/parser/xmlEntrySplice.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"xmlEntrySplice.d.ts","sourceRoot":"","sources":["../../../src/datamodel/parser/xmlEntrySplice.ts"],"names":[],"mappings":"AASA,OAAO,EAAmB,KAAK,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAOzE,MAAM,WAAW,OAAO;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AAyBD;;;;;;;;;;GAUG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,aAAa,GAAG,OAAO,GAAG,IAAI,CAoB/F;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,aAAa,GAAG,OAAO,GAAG,IAAI,CAWhG;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAelE"} \ No newline at end of file +{"version":3,"file":"xmlEntrySplice.d.ts","sourceRoot":"","sources":["../../../src/datamodel/parser/xmlEntrySplice.ts"],"names":[],"mappings":"AASA,OAAO,EAAmB,KAAK,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAOzE,MAAM,WAAW,OAAO;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AAuBD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAWvE;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,aAAa,GAAG,OAAO,GAAG,IAAI,CAoB/F;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,aAAa,GAAG,OAAO,GAAG,IAAI,CAWhG;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAelE"} \ No newline at end of file diff --git a/dist/datamodel/parser/xmlEntrySplice.js b/dist/datamodel/parser/xmlEntrySplice.js index 0c4a5c12..34d599eb 100644 --- a/dist/datamodel/parser/xmlEntrySplice.js +++ b/dist/datamodel/parser/xmlEntrySplice.js @@ -22,15 +22,47 @@ const DICTREF_OPEN = ''; // null, so such a fragment is SKIPPED rather than matched — otherwise a search // for a real entry name could land on it and splice over the wrong . function entryNameOf(fragment) { - const m = fragment.match(/

]*>([^<]*)<\/P>/); - return m ? m[1] : null; + return pNodeText(fragment, '

]*>([^<]*)<\/P>/); - return m ? m[1] : null; + return pNodeText(fragment, '

]*>([^<]*)<\/P>/)?.[1] ?? null` read it for + * `open` = `

` and the `<` after it, so a fragment holding many `open`s that no `>` + * follows soon cost their count times that walk: the square of a run that the + * file's bytes decide. + * + * At one start the regex can match only one way. `[^>]*` cannot pass a `>`, so its + * `>` is the first one after `open`; `[^<]*` cannot pass a `<`, so the text ends at + * the first `<` after that, where `

` either is or is not. `open` starts with its + * only `<` and holds no `>`, so a later start either lies before that `>` (and meets + * the same `>`, the same `<` and the same answer) or lies at or after that `<`. So + * the next start worth trying is the next `open` from there, and no character is + * read more than a bounded number of times. + */ +export function pNodeText(fragment, open) { + let at = fragment.indexOf(open); + while (at >= 0) { + const gt = fragment.indexOf('>', at + open.length); + if (gt < 0) + return null; + const lt = fragment.indexOf('<', gt + 1); + if (lt < 0) + return null; + if (fragment.startsWith('

', lt)) + return fragment.slice(gt + 1, lt); + at = fragment.indexOf(open, lt); + } + return null; } /** * Byte span of the … the selector identifies diff --git a/dist/datamodel/parser/xmlEntrySplice.js.map b/dist/datamodel/parser/xmlEntrySplice.js.map index 3ca75115..770a83df 100644 --- a/dist/datamodel/parser/xmlEntrySplice.js.map +++ b/dist/datamodel/parser/xmlEntrySplice.js.map @@ -1 +1 @@ -{"version":3,"file":"xmlEntrySplice.js","sourceRoot":"","sources":["../../../src/datamodel/parser/xmlEntrySplice.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"xmlEntrySplice.js","sourceRoot":"","sources":["../../../src/datamodel/parser/xmlEntrySplice.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/src/datamodel/parser/MdlParser.ts b/src/datamodel/parser/MdlParser.ts index 5d0e1a2c..2c050002 100644 --- a/src/datamodel/parser/MdlParser.ts +++ b/src/datamodel/parser/MdlParser.ts @@ -862,6 +862,10 @@ function classicMask(block: MdlNode): { names: string[]; params: { name: string; const values = (prop(block, 'MaskValueString') || '').split('|'); const names: string[] = []; const params: { name: string; value: string }[] = []; + // Whether a slot's style is an expression type, worked out once for each slot. Reading a + // style is linear in its length, and every declaration may name the same slot, so + // reading it once per declaration cost the product of the two. + const expression = new Map(); for (const decl of vars.split(';')) { const parsed = /^\s*([A-Za-z_]\w*)\s*=\s*([@&])(\d+)\s*$/.exec(decl); if (!parsed) { @@ -875,8 +879,13 @@ function classicMask(block: MdlNode): { names: string[]; params: { name: string; if (evaluated !== '@' || slot < 0 || slot >= values.length) { continue; } - const type = (styles[slot] ?? 'edit').replace(/\(.*$/, '').trim().toLowerCase(); - if (!isExpressionMaskType(type)) { + let isExpression = expression.get(slot); + if (isExpression === undefined) { + const type = styleWithoutOptions(styles[slot] ?? 'edit').trim().toLowerCase(); + isExpression = isExpressionMaskType(type); + expression.set(slot, isExpression); + } + if (!isExpression) { continue; } params.push({ name, value: values[slot] }); @@ -884,6 +893,30 @@ function classicMask(block: MdlNode): { names: string[]; params: { name: string; return { names, params }; } +/** + * A mask style with its options cut off, `popup(a|b)` to `popup`, exactly as + * `style.replace(/\(.*$/, '')` cut them, on every input. + * + * With no `m` flag `$` is the end of the text, and `.` passes no line terminator (`\n`, + * `\r`, U+2028, U+2029), so the regex cut at the first `(` that no line terminator + * follows. It found that `(` by trying each in turn, and each try walked to the next + * line terminator before it failed, so a style of many `(` ahead of one cost their count + * times that walk. The scanner keeps a line break inside a quoted value and unescapes + * `\n` and `\r`, so a file puts one wherever it likes. The `(` the regex cut at is the + * first after the last line terminator, which five scans of the text find. + */ +export function styleWithoutOptions(style: string): string { + const from = + Math.max( + style.lastIndexOf('\n'), + style.lastIndexOf('\r'), + style.lastIndexOf('\u2028'), + style.lastIndexOf('\u2029'), + ) + 1; + const open = style.indexOf('(', from); + return open < 0 ? style : style.slice(0, open); +} + /** * MaskStyleString split into one style per parameter — at the commas OUTSIDE the * parentheses, because a popup carries its options inside them (`popup(a|b)`) and an diff --git a/src/datamodel/parser/xmlEntrySplice.ts b/src/datamodel/parser/xmlEntrySplice.ts index 25af85a4..66a7aa9e 100644 --- a/src/datamodel/parser/xmlEntrySplice.ts +++ b/src/datamodel/parser/xmlEntrySplice.ts @@ -30,16 +30,46 @@ export interface XmlSpan { // null, so such a fragment is SKIPPED rather than matched — otherwise a search // for a real entry name could land on it and splice over the wrong . function entryNameOf(fragment: string): string | null { - const m = fragment.match(/

]*>([^<]*)<\/P>/); - return m ? m[1] : null; + return pNodeText(fragment, '

]*>([^<]*)<\/P>/); - return m ? m[1] : null; + return pNodeText(fragment, '

]*>([^<]*)<\/P>/)?.[1] ?? null` read it for + * `open` = `

` and the `<` after it, so a fragment holding many `open`s that no `>` + * follows soon cost their count times that walk: the square of a run that the + * file's bytes decide. + * + * At one start the regex can match only one way. `[^>]*` cannot pass a `>`, so its + * `>` is the first one after `open`; `[^<]*` cannot pass a `<`, so the text ends at + * the first `<` after that, where `

` either is or is not. `open` starts with its + * only `<` and holds no `>`, so a later start either lies before that `>` (and meets + * the same `>`, the same `<` and the same answer) or lies at or after that `<`. So + * the next start worth trying is the next `open` from there, and no character is + * read more than a bounded number of times. + */ +export function pNodeText(fragment: string, open: string): string | null { + let at = fragment.indexOf(open); + while (at >= 0) { + const gt = fragment.indexOf('>', at + open.length); + if (gt < 0) return null; + const lt = fragment.indexOf('<', gt + 1); + if (lt < 0) return null; + if (fragment.startsWith('

', lt)) return fragment.slice(gt + 1, lt); + at = fragment.indexOf(open, lt); + } + return null; } /** diff --git a/test/mdlParser.test.ts b/test/mdlParser.test.ts index 6fd358ea..1b8076dc 100644 --- a/test/mdlParser.test.ts +++ b/test/mdlParser.test.ts @@ -17,7 +17,7 @@ // of the same diagram — are test/parity/mdl.parity.test.ts. import { describe, it, expect } from 'vitest'; import { strToU8, zipSync } from 'fflate'; -import { parseMdl } from '../src/datamodel/parser/MdlParser.js'; +import { parseMdl, styleWithoutOptions } from '../src/datamodel/parser/MdlParser.js'; import { parseModel } from '../src/datamodel/parser/ModelParser.js'; import { parseSlx } from '../src/datamodel/parser/SlxParser.js'; @@ -453,6 +453,81 @@ describe('parseMdl — classic .mdl block parameters', () => { }); }); +describe('parseMdl — classic .mdl mask styles', () => { + // The cut `styleWithoutOptions` replaced, kept here as the specification it is held to. + // It is quadratic on a style of many `(` ahead of a line terminator, which is why it is + // not the implementation; every input below is small enough for it to finish. + const viaRegex = (s: string): string => s.replace(/\(.*$/, ''); + + // Random strings over the characters the cut gives meaning to, all four line + // terminators among them, seeded so a failure reproduces. + it('cuts a style where the regex cut it, on random input', () => { + let seed = 1; + const rand = (n: number): number => { + seed ^= seed << 13; + seed ^= seed >>> 17; + seed ^= seed << 5; + return (seed >>> 0) % n; + }; + const pieces = ['(', ')', 'x', ' ', '\n', '\r', '\u2028', '\u2029', 'popup(', 'edit', '|', ',']; + for (let k = 0; k < 20000; k++) { + let s = ''; + for (let i = 1 + rand(30); i > 0; i--) { + s += pieces[rand(pieces.length)]; + } + expect(styleWithoutOptions(s), JSON.stringify(s)).toBe(viaRegex(s)); + } + }); + + // One masked block, its three mask properties spelled as given: escapes and all, since + // the scanner unescapes them. + const masked = (styles: string, vars: string, values: string): ArrayBuffer => + bytes(`Model { + Name "m" + System { + Name "m" + Block { + BlockType SubSystem + Name "Masked" + SID "1" + MaskStyleString "${styles}" + MaskVariables "${vars}" + MaskValueString "${values}" + } + } +} +`); + + // `\(.*$` failed at every `(` that a line terminator follows, and each failure walked to + // it. The scanner unescapes `\n`, so the first style below holds 80,000 `(` ahead of + // one: with the regex it took 3.9 s to read. Here it takes 5 ms over two full runs, so + // 1 s is past five times CI's time, at 3.3 times this machine's (fe238c7). + it('reads a style of many `(` ahead of a line break at once, and the style after it', () => { + const n = 80_000; + const t0 = performance.now(); + const parsed = parseMdl(masked('('.repeat(n) + '\\n' + ')'.repeat(n) + ',edit', 'k=@1;g=@2;', 'Kp|Kg'), 'm.mdl'); + expect(performance.now() - t0).toBeLessThan(1000); + // `k`'s style is no expression type, so only `g` is a row; both are in scope. + expect(parsed.blockParamUsages).toEqual([ + { blockName: 'Masked', blockType: 'SubSystem', paramProperty: 'g', paramValue: 'Kg', sid: '1', systemPath: '' }, + ]); + expect(parsed.masks.map((m) => m.names)).toEqual([['k', 'g']]); + }); + + // A style was read again for every declaration naming its slot, and reading one is + // linear in its length, so the two multiplied: 30,000 declarations naming a style of + // 200,000 characters took 3.7 s with the regex. Each slot's style is read once now, and + // this takes 21 ms over two full runs, so 1 s is past five times CI's time, at 3.3 + // times this machine's (fe238c7). + it('reads one long style named by many declarations at once', () => { + const t0 = performance.now(); + const parsed = parseMdl(masked(`edit(${'x'.repeat(200_000)})`, 'k=@1;'.repeat(30_000), 'Kp'), 'm.mdl'); + expect(performance.now() - t0).toBeLessThan(1000); + expect(parsed.blockParamUsages).toHaveLength(30_000); + expect(new Set(parsed.blockParamUsages.map((u) => `${u.paramProperty}=${u.paramValue}`))).toEqual(new Set(['k=Kp'])); + }); +}); + describe('parseMdl — classic .mdl grammar edge cases', () => { it('reads a Library the same way as a Model', () => { const parsed = parseMdl(bytes('Library {\n Name "lib"\n Creator "someone"\n}\n'), 'lib.mdl'); diff --git a/test/xmlEntrySplice.test.ts b/test/xmlEntrySplice.test.ts index 0f13ba6a..ad699739 100644 --- a/test/xmlEntrySplice.test.ts +++ b/test/xmlEntrySplice.test.ts @@ -7,6 +7,7 @@ import { findEntryObjectSpan, findEntryElementSpan, findEntryInsertionPoint, + pNodeText, } from '../src/datamodel/parser/xmlEntrySplice.js'; function chunkXml(fixture: string): string { @@ -179,3 +180,68 @@ describe('findEntryElementSpan', () => { expect(findEntryElementSpan(nested, 'NoSuchEntry')).toBeNull(); }); }); + +describe('the Name and UUID reads, on fragments that are not well-formed entries', () => { + // The two patterns `pNodeText` replaced, kept here as the specification it is held to. + // Each is quadratic on a fragment holding many opens that no `>` follows soon, which is + // why it is not the implementation; every input below is small enough for it to finish. + const SPEC: Record = { + '

]*>([^<]*)<\/P>/, + '

]*>([^<]*)<\/P>/, + }; + const viaRegex = (s: string, open: string): string | null => { + const m = s.match(SPEC[open]); + return m ? m[1] : null; + }; + + // Random strings over the pieces the patterns give meaning to, seeded so a failure + // reproduces: opens with and without their `>`, closes, and the `<` that ends a text. + it('reads what the regexes read, on random input', () => { + let seed = 1; + const rand = (n: number): number => { + seed ^= seed << 13; + seed ^= seed >>> 17; + seed ^= seed << 5; + return (seed >>> 0) % n; + }; + const pieces = [ + '

', '<', '>', '/', 'P', ' ', 'Name="Name"', + 'x', '\n', '

', '"', '', + ]; + for (let k = 0; k < 20000; k++) { + let s = ''; + for (let i = 1 + rand(30); i > 0; i--) { + s += pieces[rand(pieces.length)]; + } + for (const open of Object.keys(SPEC)) { + expect(pNodeText(s, open), JSON.stringify([open, s])).toBe(viaRegex(s, open)); + } + } + }); + + // An entry ahead of the one looked up, holding a comment of 25,000 Name opens. The + // regex retried at each and walked from each to the comment's `>`: the lookup took + // 4.1 s. Here it takes 0.4 ms over two full runs, so 1 s is past five times CI's time, + // at 3.3 times this machine's (fe238c7). + it('looks past an entry holding many Name opens at once', () => { + const run = ``; + const xml = nested.replace('

StructWithParam

'); + }); + + // The same run of UUID opens, ahead of the UUID that breaks a tie between two entries + // of one name, which is read only once the name has matched. With the regex the lookup + // took 4.1 to 5.5 s; here it takes 1.1 ms over two full runs, under the same bound. + it('reads the UUID that breaks a name tie past an entry holding many UUID opens, at once', () => { + const run = ``; + const xml = nested.replace('

([^<]*)<\/P>/.exec(nested)![1]; + const t0 = performance.now(); + const span = findEntryObjectSpan(xml, { name: 'CellWithParam', uuid }); + expect(performance.now() - t0).toBeLessThan(1000); + expect(xml.slice(span!.offset, span!.offset + span!.length)).toContain(run); + }); +});