Soci (Soczó Zsolt) szakmai blogja

2015.01.11.

Gyors .NET tömörítő algoritmusok

Filed under: .NET,Szakmai élet — Soczó Zsolt @ 17:32

A backtesteremben nagyon sok adatot kell kezelni memóriában, sok gigabájtot. A memóriacache-emben tömörítve vannak az adatok. Tömörítésre eddig a .NET GZip algoritmusát használtam, fastest módban, így elfogadható sebességet és tömörítést kapva.
Most viszont olvastam róla, hogy vannak alternatív algoritmusok is. Tettem hát egy próbát, az alábbi eredményeket kapva:

.NET GZipStream fastest mode:
Compression time: 00:00:00.1801551, compressed size: 75,122.00
Decompression time: 00:00:00.2001859

Ez a baseline.

Snappy native:
https://snappy4net.codeplex.com/
Compression time: 00:00:00.1815305, compressed size: 508,387.00
Decompression time: 00:00:00.1464451

Hát, ez nem győzött meg.

Lz4:
http://lz4net.codeplex.com/
Compression time: 00:00:00.6303679, compressed size: 41,926.00
Decompression time: 00:00:00.1364594

Ez se az igazi sebességben, de legalább jól tömörít.

Lz4Native:
https://code.google.com/p/lz4-net/
Compression time: 00:00:00.0925361, compressed size: 49,862.00
Decompression time: 00:00:00.1757730

Na, ez már tetszik. Jobban tömörített, mint a gzip, fele annyi idő alatt, mint az, és a decompress is egy kicsit gyorsabb. Kipróbálom majd igazi adatokkal is, meglátjuk, ott hogy zenél.

2 Comments

  1. Szerintem azt az lz4net-et, ami nem sima wrapper, próbáld ki majd egyszer úgy, hogy egymás után többször ráhívsz, mert az gyanús, hogy a kitömörítés gyorsabb ott a natív+wrapperhez képest.

    Lehet, hogy a fordítás visz el egy fel másodpercet?

    Comment by Meister — 2015.01.12. @ 00:23

  2. Jó ötlet, megnézem majd, amint odaérek.

    Comment by Soczó Zsolt — 2015.01.12. @ 12:07

RSS feed for comments on this post.

Sorry, the comment form is closed at this time.

Powered by WordPress