Skip to content

Reduce allocations#14

Merged
ghost1face merged 3 commits into
masterfrom
performance
Jun 2, 2026
Merged

Reduce allocations#14
ghost1face merged 3 commits into
masterfrom
performance

Conversation

@ghost1face

Copy link
Copy Markdown
Owner
  • Minimize allocations and tighten performance

@ghost1face
ghost1face requested a review from Copilot June 2, 2026 16:34
@ghost1face ghost1face self-assigned this Jun 2, 2026
@ghost1face ghost1face changed the title Performance Reduce allocations Jun 2, 2026

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 focuses on reducing allocations in the Base62 conversion path and adding a BenchmarkDotNet harness to measure the impact of those changes within the solution.

Changes:

  • Optimize Base62Converter by removing List<>/StringBuilder usage in hot paths (array-based base conversion and char-buffer string construction).
  • Add a new Base62.Benchmark project (plus a helper script) to benchmark current code vs. the latest NuGet package version.
  • Update solution configuration/platform entries and ignore BenchmarkDotNet artifacts.

Reviewed changes

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

Show a summary per file
File Description
benchmark.sh Adds a simple script to run the benchmark project in Release.
Base62/Base62Converter.cs Reworks encoding/decoding and base conversion to reduce allocations and improve performance.
Base62.sln Adds the benchmark project and x86/x64 configurations.
Base62.Benchmark/Program.cs Runs benchmarks and fetches latest NuGet package versions via dotnet package search.
Base62.Benchmark/BenchmarkConfig.cs Defines BenchmarkDotNet jobs for current project + selected NuGet versions.
Base62.Benchmark/Base62Benchmark.cs Adds benchmark cases for string/byte encode/decode scenarios (incl. leading zeros).
Base62.Benchmark/Base62.Benchmark.csproj New benchmark project targeting net10.0, with conditional project vs. package reference.
Base62.Benchmark/Nuget/NugetPackage.cs DTO for NuGet search JSON payload.
Base62.Benchmark/Nuget/NugetSourceResult.cs DTO for NuGet search JSON payload.
Base62.Benchmark/Nuget/NugetSearchResultRoot.cs DTO root for NuGet search JSON payload.
.gitignore Ignores BenchmarkDotNet.Artifacts/.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread Base62.Benchmark/Program.cs
Comment thread Base62.Benchmark/Program.cs
Comment thread Base62/Base62Converter.cs
Comment thread Base62/Base62Converter.cs
@ghost1face
ghost1face merged commit d31d8ef into master Jun 2, 2026
1 check passed
@ghost1face
ghost1face deleted the performance branch June 2, 2026 17:56
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants