PureXML/Sources
Mihaela Mihaljevic e5b5120ac2
perf(xslt): direct ID lookup in id() instead of full-index scan (#315)
id() filtered the entire document ID index by tokens.contains on every
call, O(index) per call, so a stylesheet calling id() across a wide
document was quadratic. Look each requested token up directly in the
index dictionary instead, O(tokens). The result is unchanged: the same
elements, in document order (the ID values are the keys, each mapping to
one element). key() already used direct lookups.

Resolving 4000 id() references against a 4000-entry index drops from
about 0.34 s to about 0.03 s (~13x), now linear.
2026-06-26 04:25:58 +02:00
..
Canonical
Catalog
Emitting perf(serialize): scan bytes, not graphemes, to find characters to escape (#297) 2026-06-25 15:39:20 +02:00
HTML fix(html): percent-escape non-ASCII characters in URI-valued attributes (closes output32) (#263) 2026-06-24 03:27:49 +02:00
Model perf(parse): adopt prepared children when materializing the tree (#293) 2026-06-25 13:02:20 +02:00
Parsing perf(parse): build the TreeNode tree directly from the event stream (#295) 2026-06-25 14:15:57 +02:00
Pattern
Regex docs(schema): disclose the contested-corpus basis for rejecting unescaped [ (#250) 2026-06-23 03:34:38 +02:00
Schema perf(schema): make xsd identity-constraint validation linear (#312) 2026-06-26 02:45:17 +02:00
Stream
Validation
XInclude
XPath perf(xpath): make translate() and the substring search functions linear (#308) 2026-06-26 00:11:49 +02:00
XPointer perf(xpointer): linear-time string-range() search (#314) 2026-06-26 04:01:41 +02:00
XSLT perf(xslt): direct ID lookup in id() instead of full-index scan (#315) 2026-06-26 04:25:58 +02:00
API.swift perf(parse): build the TreeNode tree directly from the event stream (#295) 2026-06-25 14:15:57 +02:00
Lint.swift
PureXML.swift
QuickFix.swift