|
8 | 8 |
|
9 | 9 | namespace LogExpert.Core.Classes.Log; |
10 | 10 |
|
11 | | -public class PositionAwareStreamReaderPipeline : LogStreamReaderBase, ILogStreamReaderSpan |
| 11 | +public class PositionAwareStreamReaderPipeline : LogStreamReaderBase, ILogStreamReaderMemory |
12 | 12 | { |
13 | 13 | private const int DEFAULT_BYTE_BUFFER_SIZE = 64 * 1024; // 64 KB |
14 | 14 | private const int MINIMUM_READ_AHEAD_SIZE = 4 * 1024; // 4 KB |
@@ -416,7 +416,8 @@ private void EnqueueLine (LineSegment segment) |
416 | 416 | var remaining = localCharsInBuffer - searchIndex; |
417 | 417 | if (remaining > 0 && searchIndex > 0) |
418 | 418 | { |
419 | | - Array.Copy(charBuffer, searchIndex, charBuffer, 0, remaining); |
| 419 | + charBuffer.AsSpan(searchIndex, remaining).CopyTo(charBuffer.AsSpan(0, remaining)); |
| 420 | + //Array.Copy(charBuffer, searchIndex, charBuffer, 0, remaining); |
420 | 421 | } |
421 | 422 |
|
422 | 423 | return (remaining, localByteOffset); |
@@ -446,7 +447,8 @@ private void EnqueueLine (LineSegment segment) |
446 | 447 | var remaining = charsInBuffer - searchIndex; |
447 | 448 | if (remaining > 0 && searchIndex > 0) |
448 | 449 | { |
449 | | - Array.Copy(charBuffer, searchIndex, charBuffer, 0, remaining); |
| 450 | + charBuffer.AsSpan(searchIndex, remaining).CopyTo(charBuffer.AsSpan(0, remaining)); |
| 451 | + //Array.Copy(charBuffer, searchIndex, charBuffer, 0, remaining); |
450 | 452 | } |
451 | 453 |
|
452 | 454 | charsInBuffer = remaining; |
@@ -580,7 +582,8 @@ private LineSegment CreateSegment ( |
580 | 582 | // Copy line content (excluding newline) |
581 | 583 | if (logicalLength > 0) |
582 | 584 | { |
583 | | - Array.Copy(source, start, buffer, 0, logicalLength); |
| 585 | + source.AsSpan(start, logicalLength).CopyTo(buffer.AsSpan(0, logicalLength)); |
| 586 | + //Array.Copy(source, start, buffer, 0, logicalLength); |
584 | 587 | } |
585 | 588 |
|
586 | 589 | return new LineSegment(buffer, logicalLength, byteOffset, byteLength, truncated, false); |
|
0 commit comments