Сравнение на библиотеки за архивиране в

Зад кулисите на следното: ZLibNet, #ZipLib, DotNetZip и ZipStorer. Подробности за описанието:

Zipper zip = нов Zipper(); zip.ItemList.Add(inPath); zip.ZipFile = outPath; zip.PathInZip = enPathInZip.None; zip.Zip();

using ( ZipOutputStream s = new ZipOutputStream ( File . Create ( outPath ))) s . UseZip64 = UseZip64 . Off ; ако (ниво != -1) s.SetLevel(ниво);

байт [] буфер = нов байт [4096]; ZipEntry запис = нов ZipEntry ( Path . GetFileName ( inPath ) ) ; p.PutNextEntry(запис); using ( FileStream fs = File . OpenRead ( inPath ) ) int sourceBytes ; do sourceBytes = fs.Четене (буфер, 0, буфер. Дължина); s. Write ( buffer , 0 , sourceBytes ) ; > докато (sourceBytes > 0); > s. Finish ( ) ; s. Затваряне ( ); >

използвайки (ZipFile zip = нов ZipFile()) zip.CompressionLevel = compressionLevel; ZipEntries = zip.AddFile(inPath, "" ); zip Запазване ( outPath ) ; >

ZipStores zip = ZipStores.Create(outPath, "About"); zip.AddFile(compressionLevel, inPath, inputFileName, ""); // Актуализира и затваря zip файла zip.Close();

Тестиране

Денят на благодарността

Предишни кавички в 3 категории: снежинка — снежинка снежинка, снежинка След това — например SQLite, а по-късно — „Опитът на езиковата среда“ на английски В безплатен pdf. Моля, цитирайте усмивка на лицето си, когато става въпрос за това. Благодаря, че прочетохте снежинките снежинки, в този момент ще бъде включено максимално стискане, към съжаляваща функция ниво на сжатия Абонирайте се за #ZipLib и DotNetZip, вижте дали можете да получите най-добрите резултати ько они.

Цената е 9 373 180 минути. Премахнете елементите -Журнали за кореспонденция на ICQ от Quip. И така, резултатите при максимална скорост:

DotNetZip

И така, #ZipLib и zlibnet са еднакви по отношение на скоростта, но втората библиотека показва много по-добър резултат. Останалите библиотеки показват сериозно изоставане в скоростта. Сега резултатите от теста за максимална компресия:

Тук резултатите са по-равномерни.

База данни, размер 19 407 754 байта. Съдържанието на базата данни е голям брой редове.

ZipLib

Ситуацията е идентична с текстов файл, сега резултатите от теста за максимална компресия:

И отново резултатите от първия тест се повтарят: едната библиотека е малко по-бърза, другата компресира малко по-добре.

PDF със сканирани страници, размер 19 407 754 байта. Може да се очаква, че компресията няма да има много смисъл, но нека да го проверим:

ZipLib

Разликите в размера се оказаха незначителни, но скоростта се различава значително. Този път ZipStorer е начело, което е разбираемо - има най-лоша компресия. DotNetZip и #ZipLib показват почти идентични резултати. Сега резултатите от теста за максимална компресия:

Разархивиране.

Като начало проверих всички архиви за четене. Всички библиотеки могат да отварят архиви, създадени от други библиотеки, без изненади. Директно ще тествам самото разархивиране на два архива: първият е базата от първия тест, пакетиран по най-бързия начин, вторият е същият файл, но с ултра компресия. И двата архива са получени с помощта на 7-zip. Помислете за резултатите:

Парадоксално, но вярно: всички библиотеки разопаковаха архива с максимална компресия по-бързо, отколкото с минимална. Огромните пропуски между библиотеките също са изненадващи.

Сравнение на процесори.

Сега ще пусна тест за архивиранетестов файл на още два компютъра. Първият е четириядрен i7-870(2.93GHz) 16Gb на 1 година, а вторият лаптоп Dell 1525 T2370(1.73GHz) 2Gb на 3 години. Архивиране на база данни:

сравнение

Резултатите са изненадващи. Само DotNetZip показа значително увеличение. ZlibNet и ZipStorer показаха двойно увеличение на производителността при преминаване от лаптоп към двуядрен процесор, но сега 4-ядреният не даде голяма печалба, т.е. можем да заключим, че те зависят повече от честотата, отколкото от броя на ядрата. Но най-поразителният резултат е #ZipLib - компресията отнема повече време на i7-870, отколкото на стария лаптоп процесор. Трудно ми е да обясня тази разлика. И ето резултатите от разопаковането на архива:

сравнение

Тук ситуацията също е необичайна: #ZipLib и DotNetZip работят по-бавно на i7-870, отколкото на E8400. Накрая, ето екранни снимки на диспечера на задачите, докато приложението работи:

ZipLib

Тук ZLibNet периодът е маркиран в червено, #ZipLib в синьо, DotNetZip в жълто и ZipStorer в лилаво. Ясно се вижда, че DotNetZip натоварва максимално и двете ядра. Което потвърждава резултатите от сравнителния тест.

И тук можете да получите грант за тестов период на Yandex.Cloud. Необходимо е само да въведете "Habr" в полето "секретна парола".