Skip to content

Conversation

sakthivelmanii
Copy link
Collaborator

This PR introduces a framework for performance regression testing in the Java Spanner client library using JMH (Java Microbenchmark Harness), as outlined in our internal design document for performance regression detection.

Key Changes:

  • JMH Benchmarks: Includes initial JMH benchmark classes targeting key read operations:
    • google.spanner.v1.Spanner/StreamingRead
    • google.spanner.v1.Spanner/ExecuteStreamingSql
  • Mock Server Integration: The benchmarks are designed to run against a local mock gRPC Spanner server to ensure consistent results and isolate client library performance.
  • Runner Script: A shell script is provided to orchestrate the benchmark execution, including setup, warm-up, execution, and result collection. cl/811649110

Purpose:

The main objective is to establish an automated system to detect performance regressions within the client library code before they impact users. This setup helps ensure that changes and new features do not negatively affect the library's latency and throughput.

Internal Reference: b/414281827

@sakthivelmanii sakthivelmanii requested review from a team as code owners October 1, 2025 07:22
@product-auto-label product-auto-label bot added size: l Pull request size is large. api: spanner Issues related to the googleapis/java-spanner API. labels Oct 1, 2025
@sakthivelmanii sakthivelmanii force-pushed the spanner_benchmarking branch 5 times, most recently from 84a6780 to a5a229d Compare October 1, 2025 13:02
olavloite
olavloite previously approved these changes Oct 1, 2025
@sakthivelmanii sakthivelmanii force-pushed the spanner_benchmarking branch 5 times, most recently from 0a75e19 to 545ce98 Compare October 1, 2025 15:10
@sakthivelmanii sakthivelmanii merged commit 4920266 into main Oct 4, 2025
57 of 61 checks passed
@sakthivelmanii sakthivelmanii deleted the spanner_benchmarking branch October 4, 2025 10:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
api: spanner Issues related to the googleapis/java-spanner API. size: l Pull request size is large.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants