benchmark/ICSharpCode.SharpZipLib.Benchmark/Zip/ZipInputStream.cs (47 lines of code) (raw):

using System; using System.IO; using BenchmarkDotNet.Attributes; namespace ICSharpCode.SharpZipLib.Benchmark.Zip { [MemoryDiagnoser] [Config(typeof(MultipleRuntimes))] public class ZipInputStream { private const int ChunkCount = 64; private const int ChunkSize = 1024 * 1024; private const int N = ChunkCount * ChunkSize; byte[] zippedData; byte[] readBuffer = new byte[4096]; public ZipInputStream() { using (var memoryStream = new MemoryStream()) { using (var zipOutputStream = new SharpZipLib.Zip.ZipOutputStream(memoryStream)) { zipOutputStream.PutNextEntry(new SharpZipLib.Zip.ZipEntry("0")); var inputBuffer = new byte[ChunkSize]; for (int i = 0; i < ChunkCount; i++) { zipOutputStream.Write(inputBuffer, 0, inputBuffer.Length); } } zippedData = memoryStream.ToArray(); } } [Benchmark] public long ReadZipInputStream() { using (var memoryStream = new MemoryStream(zippedData)) { using (var zipInputStream = new SharpZipLib.Zip.ZipInputStream(memoryStream)) { var entry = zipInputStream.GetNextEntry(); while (zipInputStream.Read(readBuffer, 0, readBuffer.Length) > 0) { } return entry.Size; } } } } }