feat: publish Regex Tools 0.1.0
This commit is contained in:
66
docs/PERFORMANCE.md
Normal file
66
docs/PERFORMANCE.md
Normal file
@@ -0,0 +1,66 @@
|
||||
# Performance
|
||||
|
||||
Live parsing is debounced by 120 ms and live execution by 220 ms. Live runs use
|
||||
a 250 ms wall-clock limit; manual runs default to 2 seconds and can be raised to
|
||||
the configured 10-second maximum.
|
||||
|
||||
Tests exercise bounded parsing, execution, zero-length iteration, result
|
||||
truncation and worker recovery. Browser performance depends on hardware,
|
||||
browser, engine version, pattern and subject. The UI therefore reports observed
|
||||
elapsed time and exact runtime identity but makes no universal throughput or
|
||||
safety claim.
|
||||
|
||||
The production bundle separates syntax and execution workers. Interactive
|
||||
syntax/extraction trees and editor decoration sets render at most 2,000 items
|
||||
each and report both the rendered and actual totals. These are presentation
|
||||
limits only: normalized syntax, exact ranges and bounded engine results remain
|
||||
available to the capture table and eligible exports.
|
||||
|
||||
Replacement templates have a 64 Ki UTF-16 input limit. Every token below that
|
||||
limit remains in the syntax model; the editor decorates at most 2,000 tokens,
|
||||
the token list renders 500 rows, and at most 200 replacement diagnostics
|
||||
(including an omission summary) cross into the UI. List templates have a 16 Ki
|
||||
UTF-16 input limit and render 250 token chips.
|
||||
|
||||
The per-match replacement view renders at most 200 matches and 2,000
|
||||
contributions, with a combined 50,000 token-evaluation budget. Original,
|
||||
replacement and individual contribution text are previewed separately from the
|
||||
bounded output.
|
||||
|
||||
Capture rows are collected under the central 100,000-row limit and rendered in
|
||||
pages of 200. Individual result-value previews are capped at 64 Ki UTF-16 units
|
||||
and share an 8 Mi-unit aggregate engine-result budget. The extraction tree
|
||||
shows 100 UTF-16 units per value and capture-table cells show 512, with explicit
|
||||
range lengths and separate engine-prefix labels; copy and eligible JSON export
|
||||
retain the bounded engine value. List export is disabled when a source value is incomplete, so a bounded
|
||||
preview cannot be mistaken for the full value. List generation additionally
|
||||
stops at 250,000 template-token evaluations, a 64 Ki UTF-16 row preview, or an
|
||||
8 Mi-unit aggregate materialization bound. The UI shows 500 list rows while an
|
||||
eligible export still contains every generated row; any incomplete result
|
||||
disables export.
|
||||
Replacement output has a separate 64 MiB bound. Match/capture-limit
|
||||
incompleteness and output-byte truncation are tracked separately; either makes
|
||||
the aggregate replacement result incomplete.
|
||||
|
||||
Unit-test cases run through supervisors separate from the interactive workers.
|
||||
Each case uses its configured timeout, cancellation kills the active worker,
|
||||
and the suite has a 60-second aggregate wall limit. Suite state is capped at
|
||||
1,000 cases; add, clone, current-result capture and JSON append-import all
|
||||
enforce that cap and preflight a 32 MiB aggregate in-memory suite bound. Test
|
||||
names, patterns, subjects, replacement templates and expected values have
|
||||
explicit per-field limits; subjects must also fit the execution engine's UTF-8
|
||||
byte cap. Failure diagnostics preview only bounded portions of expected and
|
||||
actual values and retain at most 2 KiB UTF-8 per result, keeping 1,000 result
|
||||
messages below the 2 MiB log budget. A complete replacement output above the
|
||||
expected-value or aggregate-suite limit is not copied into draft state; a
|
||||
lightweight `should-match` draft is offered when applicable.
|
||||
|
||||
Project import, export and local save have a 32 MiB aggregate UTF-8 JSON limit
|
||||
in addition to field-specific limits. Standalone test-suite import has the same
|
||||
32 MiB pre-parse file/document limit. Export and save count the indented JSON
|
||||
representation against a byte budget before materializing or writing it.
|
||||
IndexedDB schema version 2 indexes `updatedAt`; latest-project loading opens one
|
||||
descending cursor and validates only that record instead of calling `getAll()`.
|
||||
|
||||
Formal cold/warm benchmarks, p95 statistics and growth charts are deferred to
|
||||
the analysis milestone and will run in killable workers.
|
||||
Reference in New Issue
Block a user