using System.Collections.Generic;
using System.IO.Compression;
using System.Threading.Channels;
using System.Threading.Tasks;
using System.Diagnostics;
public static void Main()
Console.WriteLine("Running ZipWhileStreaming.");
Console.WriteLine("Running StreamAndThenZip.");
Console.WriteLine("Running StreamNoZip.");
public static void ZipWhileStreaming()
Stopwatch sw = Stopwatch.StartNew();
using var stream = new MemoryStream();
using (var zip = new ZipArchive(stream, ZipArchiveMode.Create, true))
var entry = zip.CreateEntry($"passarelli.txt");
using (var streamWriter = new StreamWriter(entry.Open()))
for(int i = 0; i < 1000000; i++)
streamWriter.WriteLine("Passarelli");
Console.WriteLine($"Stream length: {stream.Length} bytes");
Console.WriteLine($"Total time: {sw.ElapsedMilliseconds} milliseconds");
public static void StreamAndThenZip()
Stopwatch sw = Stopwatch.StartNew();
StringBuilder sb = new StringBuilder();
for(int i = 0; i < 1000000; i++)
sb.AppendLine("Passarelli");
using var stream = new MemoryStream();
using (var zip = new ZipArchive(stream, ZipArchiveMode.Create, true))
var entry = zip.CreateEntry($"passarelli.txt");
using (var streamWriter = new StreamWriter(entry.Open()))
Console.WriteLine($"Stream length: {stream.Length} bytes");
Console.WriteLine($"Total time: {sw.ElapsedMilliseconds} milliseconds");
public static void StreamNoZip()
Stopwatch sw = Stopwatch.StartNew();
using var stream = new MemoryStream();
using (var streamWriter = new StreamWriter(stream))
for(int i = 0; i < 1000000; i++)
streamWriter.WriteLine("Passarelli");
Console.WriteLine($"Stream length: {stream.Length} bytes");
Console.WriteLine($"Total time: {sw.ElapsedMilliseconds} milliseconds");