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.
A use case required combining just above 1000 PDF files (1 page each) and the gem struggled.
I noticed that CombinePDF::PDF#to_pdf instantiates way to many String objects.
Benchmarks showed these objects occupied 16GB of memory (in the case from above) while after the patch thIs number went down to 258MB.
Changes:
Instantiates fewer String object by appending to existing strings which it is more performant than using the + operator.
Appends to the last item in the array instead of popping and adding another one back.
Extracts a constant.