Skip to content

Commit f88c04b

Browse files
authored
Merge pull request #1743 from swyfft-insurance/perf/ks/20260321_streamhelper-buffer-memorypart-copy
Perf: use Stream.CopyTo and zero-copy MemoryPackagePart reads
2 parents 4e7277e + 653d81b commit f88c04b

File tree

2 files changed

+2
-13
lines changed

2 files changed

+2
-13
lines changed

openxml4Net/OPC/Internal/MemoryPackagePart.cs

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -64,11 +64,7 @@ protected override Stream GetInputStreamImpl()
6464
{
6565
return new MemoryStream();
6666
}
67-
MemoryStream newMs = new MemoryStream((int)data.Length);
68-
data.Position = 0;
69-
StreamHelper.CopyStream(data, newMs);
70-
newMs.Position = 0;
71-
return newMs;
67+
return new MemoryStream(data.GetBuffer(), 0, (int)data.Length, writable: false);
7268
}
7369

7470
protected override Stream GetOutputStreamImpl()

openxml4Net/OPC/StreamHelper.cs

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -53,14 +53,7 @@ public static void SaveXmlInStream(XmlDocument xmlContent,
5353
*/
5454
public static void CopyStream(Stream inStream, Stream outStream)
5555
{
56-
byte[] buffer = new byte[1024];
57-
int bytesRead = 0;
58-
int totalRead = 0;
59-
while ((bytesRead = inStream.Read(buffer, 0, buffer.Length)) > 0)
60-
{
61-
outStream.Write(buffer, 0, bytesRead);
62-
totalRead += bytesRead;
63-
}
56+
inStream.CopyTo(outStream);
6457
}
6558
}
6659

0 commit comments

Comments
 (0)