8000 Benchmark regression: negation (v3) · Issue #669 · project-minigraf/minigraf · GitHub
[go: up one dir, main page]

Skip to content

Benchmark regression: negation (v3) #669

Closed

Description

@github-actions

Bencher flagged these benchmarks in the nightly run (negation, v3) on two runs in a row:

  • negation/not_rule_body/10k
  • negation/not_rule_body/1k

Branch: v3
Run: https://github.com/project-minigraf/minigraf/actions/runs/39472884024
Previous run: https://github.com/project-minigraf/minigraf/actions/runs/39312292697

Please review the Bencher dashboard to confirm the regression.

Activity

  1. adityamukho commented on Oct 21, 2026

    @adityamukho
    Collaborator

    Confirmed real, and already resolved on the current v3 tip.

    Nightly numbers (v3)

    Run v3 commit 1k 10k
    2026-10-18 b21708a3 15.0 ms 1.12 s
    2026-10-19 d87dfff8 210.6 ms 20.95 s
    2026-10-20 84ac8457 163.9 ms 16.34 s

    Cause. Bisected with the same rule query and fixture (1k entities, 10% blocked): the step is 491049e0 (#624, "compare imported values by join equality on every executor path", #546): 17.5 → 206 ms at 1k. Since then StratifiedEvaluator matches each candidate row's not body with match_patterns_seeded from a one-row seed. That takes join_with_pattern's hash-join path, which scans every fact and builds bindings for every :blocked fact once per outer row. The old literal substitution matched only 0–1 facts per row. main has no seeded_body_rows, so this was v3-only.

    Resolution. #670 (#548, Recursive operator) runs rule queries on the streaming engine, which bypasses this path. Local timings (laptop, noisy):

    Remaining. The executor/evaluator path still runs negation bodies per row this way (StratifiedEvaluator, evaluate_not_join, not_body_matches). It only runs when the engine can't plan a query, and under the test oracle. #551 removes it.

    Closing; the next v3 nightly should confirm the numbers.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    performanceBenchmark performance regressions

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions

      0