Nakamichi is a LZSS codec with super-fast decompression, targeting mainly highly redundant text data.
Written by Kaze.
http://www.codeproject.com/Articles/...34#xx4807834xx
http://www.sanmayce.com/Nakamichi/
A very quick'n'rough bench on Phenom 2:
It appears to be by far the fastest LZ decoder out there.Code:pcbsd-8973% ./fsbench -v all ~/bench/calgary.tar
Codec version args
C.Size (C.Ratio) E.Speed D.Speed E.Eff. D.Eff.
7z-deflate 9.20 5
986324 (x 3.197) 5608 KB/s 121 MB/s 3853e3 4061e3
7z-deflate64 9.20 5
954413 (x 3.303) 4826 KB/s 129 MB/s 3365e3 4176e3
crush 0.0.1 0
1115260 (x 2.827) 14.6 MB/s 160 MB/s 9675e3 11e6
LZ4 r114
1620566 (x 1.946) 252 MB/s 1082 MB/s 122e6 122e6
LZ4hc r114
1195650 (x 2.637) 17.0 MB/s 1287 MB/s 10e6 11e6
LZF 3.6
1524761 (x 2.068) 108 MB/s 441 MB/s 55e6 55e6
lzmat 1.1
1181402 (x 2.669) 16.6 MB/s 236 MB/s 10e6 11e6
LZO 2.06 1x1
1595374 (x 1.976) 269 MB/s 425 MB/s 132e6 133e6
miniz 1.11 6
1032885 (x 3.053) 14.0 MB/s 165 MB/s 9659e3 11e6
Nakamichi round 5
2024249 (x 1.558) 36.0 KB/s 1825 MB/s 12e3 2199e3
Nakamichi-nomemcpy round 5
2024249 (x 1.558) 25.8 KB/s 1750 MB/s 9440e0 2204e3
QuickLZ 1.5.1b6 1
1497111 (x 2.106) 303 MB/s 335 MB/s 159e6 160e6
RLE64 R3.00 64
2877120 (x 1.096) 1732 MB/s 4228 MB/s 151e6 151e6
Snappy 1.1.0
1619277 (x 1.947) 221 MB/s 646 MB/s 107e6 107e6
tornado 0.6a 6
989437 (x 3.187) 17.1 MB/s 75.9 MB/s 11e6 12e6
Yappy v2 10
1565492 (x 2.014) 55.9 MB/s 1119 MB/s 28e6 30e6
zlib 1.2.8 6
1034381 (x 3.048) 14.4 MB/s 234 MB/s 9883e3 12e6
zling 20140324 0
1036139 (x 3.043) 38.5 MB/s 96.2 MB/s 25e6 28e6
zopfli/zlib 1.0.0/1.2.8 15/6
976086 (x 3.230) 141 KB/s 240 MB/s 97e3 4234e3
CityHash32 1.1.0
3152900 (x 1.000) 2165 MB/s 2311 MB/s 32e15 32e15
CityHash64 1.1.0
3152904 (x 1.000) 4071 MB/s 4582 MB/s 32e15 32e15
CityHash128 1.1.0
3152912 (x 1.000) 4294 MB/s 4715 MB/s 32e15 32e15
uhash 2007-04-17
3152904 (x 1.000) 1350 MB/s 1431 MB/s 32e15 32e15
vhash 2007-04-17
3152912 (x 1.000) 5238 MB/s 5905 MB/s 32e15 32e15
umac 2007-04-17
3152904 (x 1.000) 1389 MB/s 1413 MB/s 32e15 32e15
vmac 2007-04-17
3152912 (x 1.000) 5226 MB/s 5635 MB/s 32e15 32e15
SipHash24 reference
3152904 (x 1.000) 1014 MB/s 1056 MB/s 32e15 32e15
murmur3_x86_32 2012-02-29
3152900 (x 1.000) 2197 MB/s 2315 MB/s 32e15 32e15
murmur3_x86_128 2012-02-29
3152912 (x 1.000) 2225 MB/s 2293 MB/s 32e15 32e15
murmur3_x64_128 2012-02-29
3152912 (x 1.000) 3481 MB/s 3771 MB/s 32e15 32e15
SpookyHash V2 2012-08-05
3152912 (x 1.000) 6098 MB/s 6651 MB/s 32e15 32e15
FNV1a-Jesteress 2013-06-16
3152900 (x 1.000) 5076 MB/s 5605 MB/s 32e15 32e15
FNV1a-Mantis 2013-06-16
3152900 (x 1.000) 5100 MB/s 5563 MB/s 32e15 32e15
FNV1a-Meiyan 2013-06-16
3152900 (x 1.000) 5082 MB/s 5557 MB/s 32e15 32e15
FNV1a-Tesla 2013-06-16
3152904 (x 1.000) 8100 MB/s 9351 MB/s 32e15 32e15
FNV1a-Tesla3 2013-06-16
3152904 (x 1.000) 8233 MB/s 9977 MB/s 32e15 32e15
FNV1a-Yorikke 2013-06-16
3152900 (x 1.000) 5923 MB/s 6856 MB/s 32e15 32e15
FNV1a-YoshimitsuTRIAD 2013-06-16
3152900 (x 1.000) 6224 MB/s 7030 MB/s 32e15 32e15
FNV1a-Yoshimura 2013-06-16
3152904 (x 1.000) 5761 MB/s 6525 MB/s 32e15 32e15
Blake224 SHA3 Final 64bit opt
3152924 (x 1.000) 138 MB/s 137 MB/s 32e15 32e15
Blake256 SHA3 Final 64bit opt
3152928 (x 1.000) 136 MB/s 137 MB/s 32e15 32e15
Blake384 SHA3 Final 64bit opt
3152944 (x 1.000) 227 MB/s 228 MB/s 32e15 32e15
Blake512 SHA3 Final 64bit opt
3152960 (x 1.000) 228 MB/s 230 MB/s 32e15 32e15
Keccak224 3.2
3152924 (x 1.000) 217 MB/s 225 MB/s 31e15 32e15
Keccak256 3.2
3152928 (x 1.000) 206 MB/s 209 MB/s 32e15 32e15
Keccak384 3.2
3152944 (x 1.000) 164 MB/s 165 MB/s 31e15 32e15
Keccak512 3.2
3152960 (x 1.000) 114 MB/s 114 MB/s 32e15 32e15
JH224 SHA3 Final 64bit opt
3152924 (x 1.000) 27.4 MB/s 27.7 MB/s 29e15 30e15
JH256 SHA3 Final 64bit opt
3152928 (x 1.000) 27.5 MB/s 27.4 MB/s 29e15 29e15
JH384 SHA3 Final 64bit opt
3152944 (x 1.000) 29.0 MB/s 29.5 MB/s 31e15 32e15
Skein224 SHA3 Final 64bit opt
3152924 (x 1.000) 477 MB/s 476 MB/s 32e15 32e15
Skein256 SHA3 Final 64bit opt
3152928 (x 1.000) 473 MB/s 479 MB/s 32e15 32e15
Skein384 SHA3 Final 64bit opt
3152944 (x 1.000) 465 MB/s 475 MB/s 32e15 32e15
Skein512 SHA3 Final 64bit opt
3152960 (x 1.000) 478 MB/s 483 MB/s 32e15 32e15
Skein1024 SHA3 Final 64bit opt
3153024 (x 1.000) 272 MB/s 272 MB/s 32e15 32e15
xxhash r29
3152900 (x 1.000) 4366 MB/s 4727 MB/s 32e15 32e15
AES128Bernstein little-4 128
3152896 (x 1.000) 149 MB/s 152 MB/s 0e0 0e0
AES256Hongjun v1 256
3152896 (x 1.000) 152 MB/s 156 MB/s 0e0 0e0
ChaCha 20080118 128
3152896 (x 1.000) 554 MB/s 562 MB/s 0e0 0e0
HC128 2007-01b 128
3152896 (x 1.000) 939 MB/s 974 MB/s 0e0 0e0
HC256 2007-01 256
3152896 (x 1.000) 659 MB/s 668 MB/s 0e0 0e0
Lex v2 128
3152896 (x 1.000) 401 MB/s 415 MB/s 0e0 0e0
Rabbit opt2 128
3152896 (x 1.000) 338 MB/s 356 MB/s 0e0 0e0
RC4 2005-08-21 128
3152896 (x 1.000) 181 MB/s 181 MB/s 0e0 0e0
Salsa20_8 merged 256
3152896 (x 1.000) 660 MB/s 664 MB/s 0e0 0e0
Salsa20_12 merged 256
3152896 (x 1.000) 431 MB/s 437 MB/s 0e0 0e0
Salsa20 merged 256
3152896 (x 1.000) 291 MB/s 295 MB/s 0e0 0e0
Snow2 fast 256
3152896 (x 1.000) 631 MB/s 636 MB/s 0e0 0e0
Sosemanuk 2005-04-26 256
3152896 (x 1.000) 403 MB/s 420 MB/s 0e0 0e0
Trivium 2006-02-23 80
3152896 (x 1.000) 547 MB/s 563 MB/s 0e0 0e0
bswap16 0
3152896 (x 1.000) 1485 MB/s - 0e0 0e0
CRC mismatch!
bswap32 0
3152896 (x 1.000) 1957 MB/s - 0e0 0e0
CRC mismatch!
bswap64 0
3152896 (x 1.000) 2417 MB/s - 0e0 0e0
CRC mismatch!
memcpy 0
3152896 (x 1.000) 2165 MB/s - 0e0 0e0
memmove 0
3152896 (x 1.000) 2195 MB/s - 0e0 0e0
nop 0
1 (x3152896.000) 7457 MB/s 2757 GB/s 7456e6 7456e6
CRC mismatch!
Codec version args
C.Size (C.Ratio) E.Speed D.Speed E.Eff. D.Eff.
done... (4*X*1) iteration(s)).
Note: Unlike f.e. lz4 it's not safe against lz stream corruption.
Note: There are also SIMD versions, I have not benchmarked them.