Skip to content

Commit

Permalink
Avoid unnecessary string concatenation
Browse files Browse the repository at this point in the history
  • Loading branch information
tspence committed Aug 6, 2024
1 parent 288965d commit 564f33d
Showing 1 changed file with 4 additions and 6 deletions.
10 changes: 4 additions & 6 deletions src/CSV.cs
Original file line number Diff line number Diff line change
Expand Up @@ -60,19 +60,18 @@ public static IEnumerable<string[]> ParseStream(StreamReader inStream, CSVSettin
int bufferSize = settings?.BufferSize ?? CSVSettings.DEFAULT_BUFFER_SIZE;
var buffer = new char[bufferSize];
var machine = new CSVStateMachine(settings);
var line = string.Empty;
while (machine.State == CSVState.CanKeepGoing)
{
var line = string.Empty;
if (machine.NeedsMoreText() && !inStream.EndOfStream)
{
var readChars = inStream.ReadBlock(buffer, 0, bufferSize);
line += new string(buffer, 0, readChars);
line = new string(buffer, 0, readChars);
}
var row = machine.ParseChunk(line, inStream.EndOfStream);
if (row != null)
{
yield return row;
line = string.Empty;
}
else if (inStream.EndOfStream)
{
Expand All @@ -93,19 +92,18 @@ public static async IAsyncEnumerable<string[]> ParseStreamAsync(StreamReader inS
int bufferSize = settings?.BufferSize ?? CSVSettings.DEFAULT_BUFFER_SIZE;
var buffer = new char[bufferSize];
var machine = new CSVStateMachine(settings);
var line = string.Empty;
while (machine.State == CSVState.CanKeepGoing)
{
var line = string.Empty;
if (machine.NeedsMoreText() && !inStream.EndOfStream)
{
var readChars = await inStream.ReadBlockAsync(buffer, 0, bufferSize);
line += new string(buffer, 0, readChars);
line = new string(buffer, 0, readChars);
}
var row = machine.ParseChunk(line, inStream.EndOfStream);
if (row != null)
{
yield return row;
line = string.Empty;
}
else if (inStream.EndOfStream)
{
Expand Down

0 comments on commit 564f33d

Please sign in to comment.