Skip to content

fix: Fix some issues with StringUtilBenchmark - #229

Open
dwalluck wants to merge 2 commits into
package-url:masterfrom
dwalluck:string-util-benchmark
Open

fix: Fix some issues with StringUtilBenchmark#229
dwalluck wants to merge 2 commits into
package-url:masterfrom
dwalluck:string-util-benchmark

Conversation

@dwalluck

@dwalluck dwalluck commented Apr 2, 2025

Copy link
Copy Markdown
Contributor
  • Make Random static even though in practice it should only be created once already (fixes SpotBugs warning)
  • Initialize fields to empty to prevent warning "@NullMarked fields must be initialized"
  • Iterate over decodedData directly instead of using the DATA_COUNT constant even though in practice these should always have the same length
  • Fill data fields directly instead of using a local variables/parameters with the same names

* Make `Random` static even though in practice it should only be
  created once already (fixes SpotBugs warning)
* Initialize fields to empty to prevent warning "`@NullMarked` fields
  must be initialized"
* Iterate over `decodedData` directly instead of using the `DATA_COUNT`
  constant even though in practice these should always have the same
  length
* Fill data fields directly instead of using a local
  variables/parameters with the same names
@dwalluck
dwalluck force-pushed the string-util-benchmark branch from de755c4 to 7bfb05b Compare April 2, 2025 15:28
Comment thread src/test/java/com/github/packageurl/internal/StringUtilBenchmark.java Outdated

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Pull request overview

This PR adjusts the JMH StringUtilBenchmark setup to address static-analysis warnings and make benchmark data generation/usage less error-prone.

Changes:

  • Make the RNG a single shared instance and initialize benchmark arrays to empty to satisfy nullness/static-analysis checks.
  • Consolidate benchmark data generation/encoding into a single createData() method and avoid unnecessary local shadowing.
  • Update baseline() to iterate over decodedData directly.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment on lines 73 to 76
@Setup
public void setup() {
decodedData = createDecodedData();
encodedData = encodeData(decodedData);
createData();
}
Comment on lines 104 to 108
@Benchmark
public void baseline(Blackhole blackhole) {
for (int i = 0; i < DATA_COUNT; i++) {
byte[] buffer = decodedData[i].getBytes(StandardCharsets.UTF_8);
for (String decodedStr : decodedData) {
byte[] buffer = decodedStr.getBytes(StandardCharsets.UTF_8);
// Prevent JIT compiler from assuming the buffer was not modified
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.

3 participants