Releases/3.2.0 - #164
Merged
Merged
Conversation
Release 3.1.1 mergeback
- Add Rake tasks for running benchmarks - Add benchmark scripts for SVG, PNG, HTML, ANSI, and format comparison - Add benchmark_helper.rb for shared setup and result saving - Add benchmark/README.md with usage and baseline results - Update Gemfile.lock with benchmark dependencies - Ignore benchmark/results/ in .gitignore - Remove Ruby 3.0 from CI test matrix
- Introduce run_ips_e2e for full workflow timing (generation + export) - Update all export benchmarks to run both end-to-end and rendering-only modes - Expand README with detailed explanation of benchmark types and output - Clarify benchmark output and add summary messages for each script
Rewrite HTML export to use a single loop and preallocate string capacity, improving speed and memory usage. Remove unnecessary helper classes.
- Refactor path tracing to use integer direction constants and arrays - Remove Edge struct, reduce allocations and intermediate arrays - Build SVG path string directly for each loop, minimizing string ops - Improves rendering speed by 130% and reduces output size - Update benchmark README with new performance results - Add comprehensive SVG export tests covering options and output
Using AI Assistant to identity (and fix) performance bottlenecks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This pull request introduces a comprehensive benchmarking suite to the RQRCode project, updates documentation and contribution guidelines, and raises the minimum supported Ruby version. The benchmarks provide detailed performance and memory usage metrics for all export formats, with supporting Rake tasks and documentation. The Ruby version matrix and documentation are updated to reflect new requirements and benchmarking capabilities.
Benchmarking infrastructure and tasks:
benchmark/directory, including scripts for SVG, PNG, HTML, ANSI, and format comparisons, as well as a sharedbenchmark_helper.rbutility. Benchmarks measure both end-to-end (generation + export) and rendering-only performance, with results saved as JSON for tracking over time. [1] [2]Documentation and guidelines:
benchmark/README.mdwith detailed instructions, performance baselines, and interpretation guidance for benchmark results.AGENTS.mdas a development guide for AI agents, covering build/test commands, code style, file structure, and commit message conventions.README.mdto document the new minimum Ruby version (>= 3.2.0) and to reference the new benchmarking suite and its usage. [1] [2]Ruby version and CI updates:
Changelog and release management:
3.2.0release entry inCHANGELOG.md, summarizing benchmarking additions, performance improvements, Ruby version changes, and documentation updates. Updated changelog links for the new release. [1] [2]Miscellaneous:
Gemfilefor development setup.