Skip to content

Conversation

@MarkWolters
Copy link
Contributor

No description provided.

Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

Adds automated benchmarking support and reporting via GitHub Actions, including a new workflow, result serialization, comparison tooling, and summary utilities.

  • Updates RAT exclusions for new workflows
  • Introduces BenchmarkSummarizer, unit tests, and a fat‐jar assembly for AutoBenchYAML
  • Adds AutoBenchYAML runner, compare_benchmarks.py comparator, and CI workflow

Reviewed Changes

Copilot reviewed 11 out of 11 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
rat-excludes.txt Ignore new workflow YAMLs in license checks
jvector-examples/src/test/java/io/github/jbellis/jvector/...Test.java Unit tests for BenchmarkSummarizer
jvector-examples/src/main/resources/logback.xml Console and file logging configuration
jvector-examples/src/main/java/io/github/jbellis/jvector/...SummarizerTest.java Main‐method summarizer tests located in production code
jvector-examples/src/main/java/io/github/jbellis/jvector/...BenchmarkSummarizer.java Summarizer implementation for recall, QPS, and latency
jvector-examples/src/main/java/io/github/jbellis/jvector/...Grid.java Extended with runAllAndCollectResults for automated runs
jvector-examples/src/main/java/io/github/jbellis/jvector/...BenchResult.java Data class for benchmark entries
jvector-examples/src/main/java/io/github/jbellis/jvector/...AutoBenchYAML.java Main runner for GitHub Actions–driven benchmarks
jvector-examples/pom.xml Assembly plugin, logging deps, and bench main class adjustments
compare_benchmarks.py Python script to diff current vs. previous benchmark results
.github/workflows/run-bench.yml CI workflow to build, run benchmarks, and upload/comparison
Comments suppressed due to low confidence (2)

jvector-examples/src/main/java/io/github/jbellis/jvector/example/util/SummarizerTest.java:1

  • This test class lives under src/main, mixing production code and tests. Consider moving it to src/test to keep test code separate.
/*

.github/workflows/run-bench.yml:86

  • The 'workflow' input to action-download-artifact should match the workflow's name ('Run Bench Main') rather than the filename. Otherwise previous artifacts may not be retrieved correctly.
          workflow: run-bench.yml


import io.github.jbellis.jvector.example.BenchResult;
import io.github.jbellis.jvector.example.util.BenchmarkSummarizer.SummaryStats;
import org.junit.Test;
Copy link

Copilot AI Jul 9, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Using JUnit4's @test annotation with JUnit Jupiter assertions may prevent these tests from being discovered or run. Consider switching to org.junit.jupiter.api.Test for consistency with the imported assertions.

Suggested change
import org.junit.Test;
import org.junit.jupiter.api.Test;

Copilot uses AI. Check for mistakes.
}
}

public static List<BenchResult> runAllAndCollectResults(
Copy link

Copilot AI Jul 9, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[nitpick] This method contains deeply nested loops, making it hard to read and maintain. Consider refactoring inner loops into helper methods or using a builder pattern to simplify.

Copilot uses AI. Check for mistakes.
"efConstruction", ef,
"neighborOverflow", neighborOverflow,
"addHierarchy", addHierarchy,
"features", features.toString(),
Copy link

Copilot AI Jul 9, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[nitpick] Using Set.toString() for features can produce nondeterministic ordering. Consider converting the feature set into a sorted list before stringifying to ensure consistent keys.

Suggested change
"features", features.toString(),
"features", features.stream().sorted().toList().toString(),

Copilot uses AI. Check for mistakes.
@MarkWolters MarkWolters closed this Jul 9, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants