Aktualnie używam tej funkcji (oraz biblioteki System.IO.Compression) do tego zadania, Niestety wymaga ona przechowania w pamięci 3 kopii danego pliku podczas wczytywania. Jest to uciążliwe przy wczytywaniu większego pliku, w tym wypadku załadowanie pliku ~1,2GB wymaga 3.3GB pamięci oraz powoduje 6 wywołań GC. Czy jest jakaś wydajniejsza metoda na wczytywanie danych? Mogę użyć innej biblioteki, ale ta akurat była najlepiej udokumentowana.
using System.IO;
using System.IO.Compression;
//...
private static byte[] LoadFile(ZipArchive source, string filename)
{
using var stream = source.GetEntry(filename).Open();
using var ms = new MemoryStream();
stream.CopyTo(ms);
return ms.ToArray();
}