objectionary / objectionary/lints
`anonymous-formation` XSL transformation is too slow on large XMIR files
@volodya-lombrozo is already working on this.
Since Jun 24, 2026.
- Dominant language
- Java
- Stars
- 14
- Forks
- 39
- Avg merge
- 22h 54m
- Merged PRs (30d)
- 90
Description
I'm getting performance warnings when running lints against eo-runtime:
[WARNING] XSL transformation 'anonymous-formation' took 125ms, whereas threshold is 100ms
What happens: The template uses a nested descendant scan:
<xsl:for-each select="//o[not(@name) and not(@base) and ...]">
<xsl:for-each select=".//o[starts-with(@base, 'ξ.ρ.') and not(eo:matches-any-void(@base, $allowed))]">
For each anonymous formation in the outer loop, the inner loop searches all its descendants again. This is an O(n²) pattern. Additionally, eo:matches-any-void calls matches() for every allowed-void pattern on each inner element.
What should happen: The transformation completes within the 100ms threshold. Restructuring to a single-pass approach or using xsl:key to pre-index the relevant @base values would remove the quadratic cost.
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Assessment
This issue has not been assessed yet.