All articles

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

Published 2015-01-11 - Last modified 2015-01-11

Original: https://soci.hu/blog/index.php/2015/01/11/gyors-net-tomorito-algoritmusok/

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.