Необходимо понять производительность многократной записи данных с использованием ZipArchiveEntry - PullRequest
0 голосов
/ 19 июня 2020

У меня есть приложение C#, которое мне нужно для многократной записи данных в zip-файл. В настоящее время я использую для этого следующий фрагмент кода, который вызывается в моем приложении несколько раз:

using (FileStream fileStr = new FileStream(fileToOpen, FileMode.Open))
{
    using (ZipArchive zipFile = new ZipArchive(fileStr, ZipArchiveMode.Update))
    {
        ZipArchiveEntry frEntry = zipFile.GetEntry(Path.GetFileName(FlightRecordFilename));
        Stream dataStr = frEntry.Open();

        using (BinaryWriter bw = new BinaryWriter(dataStr))
        {
            bw.Seek(0, SeekOrigin.End);
            bw.Write(messageData);
            bw.Flush();
        }
    }
}

Меня беспокоит, как производительность этого кода будет со временем, потому что я не знаю что происходит внутри классов. NET, которые использует этот код. По мере того, как сжатый файл становится больше, будет ли снижаться скорость записи в zip-архив? Сообщение, которое я пишу, представляет собой массив байтов, который различается по размеру, но в целом имеет максимальный размер около 1 КБ. Меня не столько беспокоит разница в производительности с учетом размера messageData, сколько общая производительность при увеличении размера zip-файла. Я не знаю, читают ли классы. NET весь zip-файл в память при каждом обновлении или они просто как-то добавляют новую запись данных в запись zip-архива на диске?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...