Изисквания: HTTP вече добавя алгоритъм за компресия Brotli, за да тества Gzip и Brotli алгоритми. В зависимост от проекта, в статията се тества само скоростта на декомпресия.
Бротли има12 нива на компресия, от 0 до 11, където 0 осигурява най-бърза скорост на компресия, но най-ниско коефициентно съотношение, докато 11 осигурява най-високо степен на компресия, но изисква повече изчислителни ресурси и време. Когато за първи път реализирахме Brotli преди 5 години, установихме, че 4-нивата компресия осигурява баланс между спестяване на байтове и време за компресия без компромис с производителността. Колкото по-високо е нивото на компресия, толкова по-малък е отпечатъкът, но продава повече CPU и паметни ресурси.
ASP.NET Алгоритъм Brotli вече е вграден в ядрото и не изисква препратка към пакети на трети страни. (Тази статия ще се отнася до пакета на трета страна: BrotliSharpLib и вградения за сравнение), конфигурацията е следната:
ASP.NET Core Brotli компресионен поток: ResponseCompressionServicesExtensions -> AddResponseCompression -> ResponseCompressionProvider -> BrotliCompressionProvider -> BrotliStream.
Кодът за изброяване на нивото на компресия е следният:
Създайте нов проект за .NET 6 конзола със следния бенчмарк код:
Резултатите от теста са следните:
Тествах файл от 503kb и след компресия нямаше голяма разлика, около 400kb, и се оказа, че скоростта на декомпресия на Gzip все още е по-висока от тази на Brotli, която би трябвало да е същатаРазмер на файла, . NET версия, ниво на компресия, съдържание на файлове и т.нНакратко, най-добре е да изберете сцената, която ви подхожда.
Ако срещнете грешка като тази:
Околна среда Резюме -> Открит код за изход на грешка от един от бенчмарковете. Причината може да бъде от следния антивирусен софтуер: - 360 SafeGuard (C:\Program Files (x86)\360\360Safe\safemon\360tray.exe) - Windows Defender (windowsdefender://) Използвайте InProcessEmitToolchain или InProcessNoEmitToolchain, за да избегнете създаване на нови процеси. решение
или
(Край)
|