objectionary / objectionary/lints

`duplicate-names` XSL transformation is too slow on large XMIR files

Open
#982 0 comments 0 reactions 1 assignee View on GitHub

@volodya-lombrozo is already working on this.

Since Jun 24, 2026.

bug
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 'duplicate-names' took 151ms, whereas threshold is 100ms
[WARNING] XSL transformation 'duplicate-names' took 158ms, whereas threshold is 100ms

What happens: For each named <o> the transformation checks:

<xsl:if test="preceding-sibling::o/@name = $x/@name">

This scans all preceding siblings for every element, making it O(k²) per parent where k is the number of named children. On objects with many children (common in generated XMIR from bytecode) this becomes the dominant cost.

What should happen: The transformation completes within the 100ms threshold. Using xsl:key to group siblings by name would allow detecting duplicates in a single pass instead of per-sibling scans.

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.