β‘ Bolt: Reduce allocations by pre-sizing List in CsvLineSplitter #111
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.
π‘ What: Update CsvLineSplitter to accept an initial capacity for the List used to store split values, and update CsvReader to pass the header count (if available) as the capacity.
π― Why: CsvLineSplitter creates a new List for every line. The default capacity is small (4), causing multiple resizes and array allocations for every line if the CSV has many columns (e.g., 50 columns -> 4 resizes).
π Impact: Reduces memory allocations and CPU overhead associated with List resizing for every row in the CSV file.
π¬ Measurement: Verified by running
dotnet test. Performance improvement is expected in high-throughput parsing scenarios with many columns.PR created automatically by Jules for task 466527172311085013 started by @stevehansen