From 66d22b803be1a0deb0e81b3d1ecb5b898719d302 Mon Sep 17 00:00:00 2001 From: Yann Collet Date: Mon, 2 Nov 2015 02:36:10 +0100 Subject: [PATCH 1/2] v0.3.1 --- Makefile | 2 +- NEWS | 3 +++ README.md | 26 ++++++++++---------------- images/CSpeed.png | Bin 0 -> 18232 bytes images/DSpeed.png | Bin 0 -> 5488 bytes programs/Makefile | 2 +- 6 files changed, 15 insertions(+), 18 deletions(-) create mode 100644 images/CSpeed.png create mode 100644 images/DSpeed.png diff --git a/Makefile b/Makefile index 4d837af85..8d63928f1 100644 --- a/Makefile +++ b/Makefile @@ -32,7 +32,7 @@ # ################################################################ # Version number -export VERSION := 0.3.0 +export VERSION := 0.3.1 PRGDIR = programs ZSTDDIR = lib diff --git a/NEWS b/NEWS index e8d8affa0..7d67e0283 100644 --- a/NEWS +++ b/NEWS @@ -1,3 +1,6 @@ +v0.3.1 : +Small compression ratio improvement + v0.3 HC mode : compression levels 2-26 diff --git a/README.md b/README.md index a634fc8a9..d670002fd 100644 --- a/README.md +++ b/README.md @@ -13,36 +13,30 @@ For a taste of its performance, here are a few benchmark numbers from a number o |-----------------|-------|--------:|--------:| | | | MB/s | MB/s | | **zstd 0.3** |**2.858**|**280**| **670** | -| [zlib 1.2.8] -1 | 2.730 | 70 | 300 | +| [zlib] 1.2.8 -1 | 2.730 | 70 | 300 | | QuickLZ 1.5.1b6 | 2.237 | 370 | 415 | | LZO 2.06 | 2.106 | 400 | 580 | | [LZ4] r131 | 2.101 | 450 | 2100 | | Snappy 1.1.0 | 2.091 | 330 | 1100 | | LZF 3.6 | 2.077 | 200 | 560 | -[zlib 1.2.8]:http://www.zlib.net/ +[zlib]:http://www.zlib.net/ [LZ4]:http://www.lz4.org/ -Zstd can also offer stronger compression ratio at the cost of compression speed, but preserving its decompression speed. In the following test, a few compressors suitable for this scenario are selected (they offer very asymetric performance, useful when compression time has little importance). The test was completed on a Core i7-5600U @ 2.6 GHz, using [benchmark 0.6.1](http://encode.ru/threads/1266-In-memory-benchmark-with-fastest-LZSS-(QuickLZ-Snappy)-compressors?p=45217&viewfull=1#post45217), an open-source benchmark program by inikep. +Zstd can also offer stronger compression ratio at the cost of compression speed. Compression speed is highly configurable, by small increment, to fit different situations. Note however that decompression speed is preserved and remain roughly the same at all settings, a property shared by most LZ compression algorithms, such as [zlib]. The following test is run on a Core i7-3930K CPU @ 4.5GHz, using [lzbench], an open-source in-memory benchmark by inikep. -|Name | Ratio | C.speed | D.speed | -|-----------------|-------|--------:|--------:| -| | | MB/s | MB/s | -| brotli -9 | 3.729 | 4 | 340 | -| **zstd 0.3 -9** |**3.447**|**30** | **640** | -| [zlib 1.2.8] -9 | 3.133 | 10 | 300 | -| LZO 2.06 -999 | 2.790 | 1 | 560 | -| [LZ4] r131 -9 | 2.720 | 25 | 2100 | +![Compression Ratio vs Speed](images/CSpeed.png "Compression Ratio vs Speed") +![Decompression Speed](images/DSpeed.png "Decompression Speed") -[lzma]:http://www.7-zip.org/ - -Zstd compression speed is highly configurable, by small increment, to fit different situations. Its memory requirement can also be configured to fit into low-memory hardware configurations, or servers handling multiple connections/contexts in parallel. +[lzbench]:https://github.com/inikep/lzbench Zstd entropy stage is provided by [Huff0 and FSE, from Finite State Entrop library](https://github.com/Cyan4973/FiniteStateEntropy). -Zstd has not yet reached "stable" status. Specifically, it doesn't guarantee yet that its current compressed format will remain stable and supported in future versions. It may still change to adapt further optimizations still being investigated. That being said, the library is now pretty robust, able to withstand hazards situations, including invalid input. The library reliability has been tested using [Fuzz Testing](https://en.wikipedia.org/wiki/Fuzz_testing), with both [internal tools](programs/fuzzer.c) and [external ones](http://lcamtuf.coredump.cx/afl). Therefore, it's now safe to test Zstandard even within production environments. +Its memory requirement can also be configured to fit into low-memory hardware configurations, or servers handling multiple connections/contexts in parallel. -"Stable Format" is projected sometimes early 2016. +Zstd has not yet reached "stable format" status. It doesn't guarantee yet that its current compressed format will remain stable and supported in future versions. During this period, it can still change to adapt new optimizations still being investigated. "Stable Format" is projected sometimes early 2016. + +That being said, the library is now fairly robust, able to withstand hazards situations, including invalid inputs. The library reliability has been tested using [Fuzz Testing](https://en.wikipedia.org/wiki/Fuzz_testing), with both [internal tools](programs/fuzzer.c) and [external ones](http://lcamtuf.coredump.cx/afl). Therefore, it seems now safe to test Zstandard even within production environments. ### Branch Policy The "dev" branch is the one where all contributions will be merged before reaching "master". If you plan to propose a patch, please commit into the "dev" branch or its own feature branch. Direct commit to "master" are not permitted. diff --git a/images/CSpeed.png b/images/CSpeed.png new file mode 100644 index 0000000000000000000000000000000000000000..6e60dbc78f70e5907339a28c0399ecd63ec56895 GIT binary patch literal 18232 zcmeAS@N?(olHy`uVBq!ia0y~yU}j)oU_8aa#K6E{&A(d-#48SRcVbv~PUa;80|QIC zqpu?a!^VE@KZ&di3=EtF9+AZi419+{nDKc2iWCM028j~ah?3y^w370~qEv>0#LT=B zy}Z;C1rt33J=4@yqf`b4x0RkQjv*CsZ}0X`7fzk`{^M`Ubv5?X=Q_wT2~3!HsyIw% zhx+D&6%!d)p7b%W=v;Yo zzUbM~2Ceeo-$$P3BwP#oCRsRNbn)6nuRor;61B6mG<<95*0aL=mun;5b+tX7dhp8M zqm#Dh|Fc-Fl`XwiVDtNhnSr_MCjE5{7uvmc&HDYmcLNUB&zyB-e_&Dl*5B)M!~eh6 zSoAiyde!|^2Wy#UC^HFcaNwP1@;c<&^?9dXnXk7~zSa1H^U_|q{FqvyHSgBcojw^sA>tzZdS1HkI!G9$SCC^m|aX$~)cc?BuD^rcr^noxjRO-HHACc-CdD!07B9 zw?izLr`|sDI;C}Ytm|UyHM?*9IN0%G)$fQ`->2LQ{M*c8z|W$P&^YOQ?AKTGO||bx ztIR(wd`0n17t8Z33T~_8=v|Z_|$DLY}+v%yTf%|uD zYEPT0_WtfpyY|pDg|91wX7B9ZlPS9KRIlvXZR@7U-486f|E}5F_EVW0SHn$#h6dKG zpD9;fL|&6!T`%QhfAearzrFCT-9`G*FQu=@<)p^G+IZIJ-5rySjn-j1-`va1THu$O z>$>Os7v8Mj{_DHDvo@}BoP9}o;;vek@JGH{*;02^!fqZ~XC7^?yX#+FQ2)`JlXqWU z<(ACwtc`(1C*aGSt6w_T{mVR8H1F*sbHBX!a@)Pe-#aht%?WJ_%DNr$?(T})xr+ANYw3Fm2k)eBwzVja-#O*dHLcy{rz?->J>R#u`{nHj-d8L43xCcC`p>tn zBK6Zoi|SP|KKCLgALm<83kt(m^S=s7tt~mO<-g+G=IBp1*S)JMO8wihJ6gN8xlL=f z>5UC}cW%};SFe&@9aHvwnpDP#pW8j|FEG25l)m zmKS*a?vYccu2!(0JpL$W&YjF97bO~YDl#x~hkdu19`N5L{Gr`V)%;m^_Pne5m3jVd z=wkJwPd;Y_pEX<4yL-34o!7)Fm3Ob$ZZBW@Zo#{c7QgcYL%KtIdg!|2{pvf-%U}P})sDKtxxkl2L4kRy`mSB-nv#a+1Ewxte{0o| z(C3nylzyg!m*2g!?c0^``p2hkJ=vV}=v@}S_CA5ayjwYY>b`g0HQN=n`#c-7Qq_lZ z0e|(*Y@IgM%Dhajc=zf_iwCK~5Yj1Y#O`6A`eJB0kse-%bbid!5e12o-=Kken z_xG$gwQObkGd_v4|Bt@mozp&PPwC`EN@v5bzSrM1ZAa$Ry9OJt?X1j-bxm#lB|4Qo zxqZ&<(;i!ntz5OuNXqB!%6IoyU4-Pm2fe2@Ct10(tgx8M^g@hD-~lg_07FVE14~6S z0}Df>A_F5s!y)>Rnl21hrLU&!6=~@f*T3cMxIpHthP&~pi#i*MnnF4lw&dTptJdUb z{Mub)vKS<_`M@d8Nnbh`o=7g^gsAK(nqd4=knx1EkMOL(zO*TeC7&v!Us7h8kUm2V zqR04@f)()gKEawzx4|0*CEc4R=V)YJ6ufiF{?gQ=QA`tWwXK)lcT%GMhAOR?nHVb&MIm zPVqCJe}DIa`If@Fzo+ZPY+Rg$8l}6wi$$0|F?sN0euZ$crEQYlc7x>%DleaJ-(T^0 zW&6E~SN9jCzP+@4OR54&>IoFT&y@X(Z(2^mwWsn8Z1e6*FQ0#E)5dz&lj|-wq9lMT zSHl~m_P2{ZpMQpF!j&7#(*M^U@U$=cx!(Mn?5)oyJ$|;_%`ltaTl4SItMBuo_x(NZ z|3Ccai9%~G1_xzfVc~C*+?5mSzrABsFn?(=%XLmGi$e8EUg=+LLNA}MY&YK-9v`{2 z_(N;$Z?EI-_EPflyEF2i&G*reA%u_I<96QsMKjTX+8spYo`%eB#^Gx4YN#&JOu< z>Xq#03gNYXZyZ5M@u&WaDsbwBz3p9RacW7B@19bdIdYk~evBS-BZ6_ zgU$TsZ(dx*{apVv+oV#Jj~?$LZ(e?&yZMV!^e*p5rD{80Et`L8)5re(xAaz?xVO3) zH3ZLYKk&)$I)h2LdHx+K`P~-3F78;eD7N`&=zqD^<-3;t^WCyjZ~dBEKfigir#>&z z7wSaI#tV8>@3}<(y>adD((@@7V%5&oCU0N&>+=6P^L?F>^D0XcYTsLTI!1=+-uv|H z*4<}sw{bt$zkU09_U95M-WgvZB?2U^budiXdo6#FsmjU|y}m_1yFcAOtL16A-0htA zqltGm=iS^^F}tEN_3F8WzV7`s1wmy+e{cExUM{@!>HIn91}$-&y)pC4W_^_x9&%N` zmo|46cb>WQ{lu~(FI`^O|Lxmb=*{iv_xaeG<&e^aHOy}UxI|j=+qCfA>`(tLS8wY# zsqWN>OId5l9X&0!In^^T%`pGW+4rBbxsPCIJ9BIOm(xz?ZLA*b+i$kq_0h$Z6F)yY zYg)}dGwIr8NQPq4R`&pxf@yE3w@gi2F5KxYzHY|#>XgoS##^Qlb+vEbMcVJ*wkh4g z%vj#jc;$(ATPB+Mt7GcF_42ySxkF-|Pqt)zytY5@pU0-YpT`!b<*%E${c4+;>{Q)U z{%6d2Z|D1AIj=*Vgn3x>&MUp5Y_wTQ3%eOy~FJ$J+6oykJi!66AL_IvdIW_@uP&sEUV{@r!^Z?=0@MoVgJ*slhzGT@%mJYkY(x32z4 z^W;gTDql?goXg(4CVJc3ne)ze7O$KC^Jc@{Kri?DcZ(J7eiQ*^aY)57Q^{XA_`aXF zmezZF-IXi8a$euGXH!=CpQ6A&v3+y@?d(@7cee*w1h4-%g|g>Wnw07VPA*1Ns7m2{|T7&yXfMxuhnspTaE9jZQK$6Tw~>l zJz-Z~V%5=j>rc(T2@%4}7hQWEWB>d8+kao$<1KE0ax*-k&rsWS`mfdTYwJZlFKybs z^2Lke@2y+V?RHuy{{Qh_mtThR&adMGwcgv$J&ax1k(I8i#q;m}yR`6!_S*1oJbxaB z=l}j8C&@lLZOY=vgr_W?(AIz-ufML;-;6y+XF3bb&bzlGb=#Fr3|lw1J&oB_kos0X zINtF|O<~~wu1QZ+BEL=TI~{aS{;yq>_55A$zeu{uwh>1`FFoh>k!|OxC+fAKSCLNn9VBoU)c%1d=EPYS zbmkXbvVSqrVzI`=mS?qxuqqHr7diR#ar^ncI+K6jyxGIQU8$3Z7dk(Y-_Nfve%5zR zXK>;IHS?gU!fErJQ<-IM7tcy>pX8}gdMMy`yrWAwS`3?94)&YVa;E=@`n2n>?ThqJ zf0-)(MprhduYdo8i#(vXLA30A5-r#IOL*yIPve=zzu@gnyP_w}ldJz1m7IP2@Xsk* z48<>n+wA`BPd3u{d2A2Imdd|!o;JPpS4$c5=W8B0xD2^fc{$Rrd%c3!Y>V%`M;3qj zcX>D4XK5+ScGN!x0*?Hzt`;f|K$Pq?>pyjpZ>9XJ#T-1>=yIOU7$3Dq&Ut}_nzJ4(A{jO z|7v>`3Ps)jeQw@c<>32%vw64FHua#Y4m(q%^6`zf?DQ|f>I=ie-rD>+=$SiT;c>!c zq})AAbkCfR8@u1{Gt0Sedigu25ue#v4dixl$87UFS!ui9U(QR_G@Z%2s0xZggp=GX zH+~T}_-4B)^Lm1%owG(ghV&6}1G~SQ&whMb9xwgQi)WGbtUyE{8J{XtwR1Epd^h{W z_LHj&Gcqn;oU`9|;ycuac6wOweZS*|8L8(F%zLYRef`-RrLu0IR01ic!L9Sl%ebHG z^Y7bm{>TDTZ?^AK`<@Flg9<=I(&#CAmh$M1`TF&D=SE{VV`lrujot57JAN$pO#kP4 z3EdZ;%O3to{VwvdH~W74){5+H@hZM(_HT9wzVFAMYb8}%w~rZ9dUEG%^SrfxD&Jmz z_IT-@|6iQq*wI7cq}Q+RCG)Fp{M&YHSL*G1wYfho^j-Y8v0G^B8{S(EXx2@hdPLlF zeO=D$c=LLdoyY&4t=xR#!~^c%-=_A>mzA|E@;CX4qzDNvyEFfU%hp^K>CkIS z-P4@GT?g(3GAEsvyPbP4rSsi3>HNa7>2vCPO`~OUW8k^Wx3r4kx&d*cxt~zkFeDbqyxxa5!XwdzDd-lf}bz z?+GoRpZ>r0bp5)UlJQe3N^*XzxqC$zp|O^A#mnl5Z*O&(0;Isb#GC(O<<;%N%KqLu zvru;N>uI^hh8}t{KOa1qvoCr@H#}T-i8p8&F27lMCM`6K(IbncA+0RW{?DCHZ`Ih= zM(ug}_WvF0UpK|eWG_@Ax)67m19tA0s(N$UhSy_@;p#=)Uzgh~cTYR4?EtDlT(#3{ z-aLApT|Qf4OWMf?7nUs!zVDa*Z}FGNhY6PJH(*+gC|V%8EXosBR05 zm^Cw=dhkfqB+l=2++_3lMcUl^az_p>gH(H0KrMJjaOi6nSqhc3naTFr*{uJ1yBY2y zc-MNiyX9(ecXeO&X`lXGmfGjg@h(Fw!qRaPqOWb%Uo@+>dV^>yRdFdtOKT>x z-7QzjFO{#!e?0MrOXlVhZO)6bXOZfBPzCWU-0!gb(&;;t7cSrJiD|{P&LSzbg$KpI z$x7SZeyJa_#2T77;6nnXTjrDqMcp+1@GkrCa<_B0bvLRh$csAF+xl-@Eq284VQ^62@3URE83Yn_XKiDhCsf?V|H`3+j?XJsBi+}m!*S&Hdo=K@6T5A`}_uk)Ac>3OfbeWtJGrwpYW(aw= z-~3wqw&uI;;LNyKX0D3F-oKX)rpw*UNxCpgwb^-gpWmF{$JTulW|uBfvpuE7;5)5q z?iJ<8728cR*Oy3w%ix|O6Y0Nixa8>I_oR{oE5vTxI_SK-y>1jkQ;0K zxfkw_*RQ`T+d8lPe#T!}C$7Q`is_e>&oM#=)FK^ENy_j3@#Vak<;&xGWn04_)*fb9 zA_8+|cA(!c>z2CT-P_+-twjsAqnhd;Wt}#ixN5xE>zr3cPctv_cwX3wqOALhSByVA zSHEv;_~P#MwySlS5I05@Fl>5my<43@vW9DoGGwTsE9TtBhnt_7F66Cs4!-YqJJ1(m z+j`h=;F<@Z*8I|XSI@V%6Cn;=%`oMM+=3$e^$ewK;Id!xY0Q2z;~$6YK9}9tcd5{N z74u!>rqZmyKE;d2Qx zA6f1iZ&81(W&VZI^=DS)O-231nptINFDqHY=&WIfp<`<4yts7+iB zlb7CmVQcVP`$Jb9&pd`DQcpnxq^Y5xEOW2!<$@H2$hewUdwFY}rLXUu|9}1Q%d$^= zs-}Fjbh!Ftu?C}H1E`4BaNnGB`sT)`$=}VNT-U4Be$L|pa%Er{e?uYin{zcby}y7{S#H)ttVarYJ;Yh@dcQE@|jk(*tp?Kjam=P>#5OwKOb&5l63uP z(>sOqON-z5HC^jMNSDv5&ZV%JiFcR4|gW=`_0Plma9pO=erLH z@{3K(0V4G!YVzGM2RscpcVuV&HQn24k{Pw{t&48bm7#zMrHXqTNcYYfCA}a6Z3@6jpgdxnoh8s_em%H{5Qdq4zjh@Jz#(9 zFa;z>Z4!XxmD4-t7%!guOy}j-z3)pNwI6-~YGTl=L_>K{iSPlG?Z(PHtY9UR~?9$Y(P{aO~5(B)#SCXP%0|oqheZrD@T{J99Mb~nS7 zynibv{kf!L92&m#v0v4Zn7l?_JL{njawz%W1ikB*HD`o z8p*1#Qjp;S=kM~`oOA5IlHYH8J}v+M=ga>??TYTKbFNlXQ+s19_DSjg8_9jF(=Mpo zp7MLO_7kqswvAn%H00mU4%` z+4T*Q4DWhgc)Q9~Rl0nUPx2z4tf|H#?Q_3)WWxf_C)ASp{QKU^{;4-_>|c~}eQP^7 zA^c$uxCaZYnX8Jz?6+O@v@hHE`j#`;J8g_BzWwsO{C)o}xSv;Qr90mbQ2P5P?`3pZ zY&AHdPiZk+J$JU#LoDkv@2Ydk;1+XWU)m~AA)R5zFR#zu?suc~?LtV1PG0a@sQ-zg zu09hivm56=og+EdB)`S>?`Gdm`~PZtndjfx^!gS!JqyAM(w?GEiaXse^`|Vb{ObkD z8FQH7Q#&Wmwtk+j%CPp00OqFPuq6Bl!sna)2Bc_2X_iw*)zz#>6viVf< z`Pkah)7w1RwBF~xF1!TF+eo?p$(t)DDmfjpr}6m3|2)WN3NBYcSGg9T2fkS9D zgGl}7#4oK5PG_$(2sVU(r?QOWPtDx->F}v}j3*t^-J)$Z!A4IBWmr`wT(Wb2(Wm~u z{cNz{~BNLQDC}uE*QXdofIsxblYm5IDRZsbs*W#r(>1Ur0~lflDC;<*wIfUMyi* zFx8fscfa^Vu;pu*1m-iH=7g4wC9&P_U6+9Ux_k11pCS=@kg8N;`RhmTU48a*xRlqV z`~98z{GXTDjBK_QdrB_7XcfLWable0`dRn2^)4-b12&HpYF@^LH?9i19$O1HyqUU_ zRpI82?IC$zZmv8Tv|qBDDd;a>_V?*=*Tr52rafnH<#(Ln9{6AXVk|tYE*H)EYr%H+ zI+=*GG&vc)=o7P-tg?>r~V0YsWJ^}r=KokE#ZU}%%8W*d{&yE^RC;WWV!IZ zJ6j6>zx_Yuq0zTLRl8q%#A+FauW~Lt(|IL!Wt_L$tS6=6k4rZx-wgh;-#7n8*B6b= z3?jB29#0#$tWwE``}TEFo0+Wd9uAjstHdYQ{Z)j{Fil_FZHs+yO1t!+LXoaf4EnE1UXDw@6Fxf7xU)t z5PW_hcKiS2-)6gawW={Lvy$1Xl63uaK4&iLmKLJf*s&=eqp^uJXJFj?PdQn7s` zqj27!GusU`747%(JqwpZ0(&%MJ_sfpRlTj>gCT1Bo3)T;RsG9DqPq`8H_GNXPLfL% zZ5!p}z`iuasm7(5yWUUq^|uxI>o7wnd-}eo)ofgE61XRQ(OAtOa&&&w zE6ww-yH{Gn+Z(MR=MH?Xe*7gk((K!Mjhm%)P}RGkrMX|zI}Wu%a77)M{WUpy?w4fo z-RJzFPWUDk5&Pugmzfpt01mQ*%wv{&-{185j|e0%%GNX7+*~iTYko64#5|t%^vA|* zt?-^x7p8mfm+Q~>Wpn340_M~^m5jA;g$YmJ-2b| z?yh`1P4eT!_`4J9Uwz!zy(wnDS#rCW%Oj7&HU`lQT}eGR6{c#adH;P@l{-5k^>NYU z-#LCDrv%Na=WtjBUX>7e;OU-CS<6!v1S>y(TgqQ~WiIz~{r?}sZ(rA`44$^t`+nAE zcF!#Rt09xU{&4yF%A~!yT4&B+nR$Xu&D?zF^w%cQ7r(IidiEPtbLYJKK2I1P?gf_M zGX2(`y8gZI6ytXle?F$`Y5!@xtp4k|owW{2FTX$Q3FOrQ6^bIMUb#H;@%fPnh44IxboM6K? z2hXo7dNgyN|1`V0Kjx>`*P14}KhH~hwcF?0W(S#^S*oWbZudJi>|!bWeBZ?7w@XiNyZL(G z$EDVn!|Oc$@SS{Lcky1P!&&C`md0D^n^HDsnRMu>B{k)|YEeypoZ))+-s!(rqnCwA z#_~E$o%A{bnz`2spZ{`n7-e8)M{tmSlZt(V746Rp*g9 zySO{a@0H_aa%L?({W3mq((}j0i;Js*E+1O_PUioIJNfeUmzT^p^=7lbXPy?mCB)Ns zn$6AK;ZJw%jq+stxaySpR-uCmUVM3Zos(N+d-8Jht{Ju6bzK~~=c&6GzqeVOI&%8H z*`ACzd8?B1i;mRYiaB#OwKG1kD?W7BzpvN71#VNcV}5x!b^nV;k{&a;|K+FuI>j&4 z5cZ8H<;zo(om^|ILB*Ct!=331Z`F&gdJJ*$BxAmN;ivW5<##-v{m{AWZp?|gC)?iD z9b;$r>HGQXLZgMj+=^eG!sT{_OT^OHtD?=#gb@-$d=Ff{J zF46Xn7uGs-uf*9JDTPYEWOjUx7gF9N zv+uv$N$1JC%Z{XrA5G^g{l2?9O5?=AXD{;?vt663;Mu>cfG=QA?BX5~R?TwPr&X?{ z(_c=!25|}F6yvE@%qQoZ{POqZMsN52p8UH?JJml%T|C}heQw{kR}WvC!JJavan}W%8TP_|&GGUs`B!*YeXrPfmws{U0Wi*}*;(lWS0EUvj_OYmRX2 z@?T;RzrsZQ)_ESE`=w*&9VT#lYR!hHOZGFL)HxomGyl$3XHOw5zw&kQvp>Gu9?1L} zw8Da$-(ga^6zhVtpK5A9mp**$0ym(E1=NwdWwNWd{kN9buKc>{?xM+E*XDlucUh=Gh3)3+U98}E zFyeCPg7)i{`(BQpXZ`!t=}C1yJXSkitlRkf`tkkl*A!h}gGPhE105&2&mV?FAcw;| z&0A}pi=Vov(_W<4U-RqdtMtd>Ep~BtjCW=q?>D#ll>ChKP2W$OJ>vRI5W7HH9;|sT zcVMlF9{u5NwkhbqyNWML0SR{@>i}mmovV^tD08+* z@A+|QWAShAB!7Mt{>bel)NJ&JZ(&l|@#*4?OyI=8qHtcM_}XXIry1AQ7A@OvWB%<= z)#OG#yB&R60b zx?hfmb>EpA9_AX)vp0LgRq=Ht;c!1Fov->8*q2sy%Ch47{#`GR>y*Xb?z$uU`RIjB zCs?hQ_+TpZ{D0%s!fNrGrMcP_|SfSTh4l^nV$9K$V2vb zD_Iv)uvNJi)h85T>OKyq?FW*z)?mSsnWgU!3-p zzWwu4#xCVEH!sY-{(j^2s~q6;2^w7jFJ@Y{M~2f@sMd$=SIW!Bo9hhbz3W(+zZ^Wy zsrCN)*Y#*7pXn~zXK$NU=luA?-|t)Mtb5)`fEzups#AjhcU?MG`aXVF!O?XuR>2#H zXR1IA#C=nWKfk*ALt9wA{OyLtnkC0)?E7@s*mm~(Dve(udqAz^rHah(l$QuzJN0?> zoXzX^hVYB-9W%5h^ z6PIO^VJ+o#)$mkj0A9ZIGs5pnuj6<3`x0MHUOK+M{_j@VwF|6|fd?ofKmVAG#qce2 zvg3VaYM&^cbePlv3IO+)epi3oaQ)od@$pl;`n`9*-Y+c zMxa@Y*q?Dn4*V-?QUUeV)Hc+Co72-yI=r*IxbL+~Id}+q!PmX-eQK?9+dm22xDP7% zSrpE*T+;_P|9>y}@2{A;z^~-_v)<_0*WVjTYCPvZ#$L986}*H8<^W?&^(EIEt**$P zba*yf=xP1uGY*ixj$nh0aKwJ_s^l|Mgwq$i)IUG7(7$w@^`vUhswc@8U$^d7<-d86 zj~m?G>R@;>^T01xQ0FeK(DGS&F#rAf^IO-eo$2Vex;1xY{&HV7P+ML0)rJFn+aQbI zIM>93mMv#In^yekd$uaG?9c7<>%Lv7ui5nFS_kG18=v#?Vt97{Ykrg&4KkiQ=H2m>3f_}WX904*~Rks|76!Wb!R?( zd?dH~9Q)6b=VxA|*hy+^Xx4?S9b|ef4j$}RJ!M&P|8Cwd!|vGU&3ASQr!RE$ZSo(z*x<6rKOJrxD-=E9=Jdy27X)uRv0-;ca} z{=om;kF*~XVxKq9*stNZ%HSX-+6X@yYjR9bNkX3UG9{Q=Wo4!Rl3o7?g`9AhAYi(Yg1C_be_cP~09rntJLF@bd>@U;Q-UftLT}@eeo$u@P*}aG* z^Up%gU2o^}V6gfy+1mc+(MgZ@N7lVv&AHo&cmFQqY-n&o*V8{#<1+dx==P|e*Y2wK z*4$Z$w&kp|E9cBy`JV62PyOHd`+bup=p5#^TcFEad3~-0^VjtnCsVDXM8VMvS|#tT zCUMg2V`-$i;c;2R>6ewC6>)>RR>r3;=J-9GQ?X3n&pz#EMPYyJ^5*`#6YnU$bT^uy zvd{(UnibWI8dKv_6zV)rv@C|Un<4!I4foBKQ;T2h+kN*-ve<4vcK_YQe{Y>>+qbX; zrZt*zMPk)N$Lgy76CXrDjd!l>AJ6;ME}cL4`~Ak(8w?iDul;!E)7wdn*Yv83m((2U zJ9qI&%dX9vn$-Wlxy$LWdEWlucm3DWMH}8MRVY~+Ki3&tLKka6nn#P?H*Y&V_y3>! zyUTBuT2t4ke#C9gDc#zJ@5I zf3|qD#61c==JZ)FJ?+(QP-9DF;pF}C+3g}63#`ra?{pboxah20CK7d0@%rA$3qHdq z0>y&PeP4c@Pj8pE5vUcv+4-)RTlpiNEmnouLOVrOfXjikH>)H0zjCGe2pC!|T^chD?L30!859M!fe|gfOvGjTG^Rh{eQzkq2 zF+7ok4hMQl-{0lx$;P$b`u#pLAGS;2eK9^2ms|FVuz+e@sV?ISPbd1n4KQc9DQh$# z?UFLng!HC4YE6!ovjY8$)8lI+nLv$`QbXp}Te3zIqQDBA=BgcX04d;3KEM8b9vjyV z>lB5#;8pT0HohzkMJ9{qT-!Cf@zA@zvkv`vbw6+J&wC+#Ysb64-s0`}g#Va4GzA6Jt?Bh_ zT>GpaCyQU#k?gtLAMp;!Lw=+z(HA^$Be;yS9%Qp|_@u_Z^$~iKFCHJYErL%sgPM7ey-(+C?(C`h`a+rC zlkHc{*Ue=sjKR}DNOL{Up5F==Zhybu9h#sZbI_nN9y*C+oIl;&ZYqPyX?OejFF*39 zd8=&F-UOaqL{S8)52H$+|GS-UY?$%mAiL3d2k;CYs1E?0t@>Q{Xy!hPzcZdbK5APQ z>xSWyw-;*5cY}LFSmY)z?N`5a{zLQk+oh7=c}T=Mr&BYxue>PSF5h9tkv84>-^=~w z?>D_Raso|&A~|uhz;t&z)BG0M9k1iR-7ma-GdzBqHioLnov-8Tbq!xUShRc7-@FX) zEH$XL4cR$1XU&ZJ9J4Fdr>swJ1WgZsQaW_zOI>?+x+&_PB<=kgo44O|v^3}-;t$V9g7(jz!)wKuFL(8b-^Q%x!2gy3I z9(0#PEAOv!GP|HO^4gDUxAwmo#Mu1!QYb(87er>T~ELLszG;UiBp(87kB{xQi8e62};wu-shcknE&U~$Lx6D8y9zC zMA95kw@yFpy^M|yFr|IH*J+e>-KVBE!_*?@g<`Czq{A+H@s5JY>e!tq1=V6>WZnSjEs&1YPh6 zSuHZTdXd6qokJ&fdHq|NtGsgMN!S=9s33$c9WDK+yWtt6#hw+RtlkKOt|bio z&J^(ZkJ8B#drmkrcqK!!stjZ?d#N_VRuBEce~JvI2cX3eWEJ`=KZdNre}0=gjNdbq zJUGC3(t&~DMai2RhQE7S_mrqIc;;mmek-aq>Dm_i!t(+H1H-yJ7KM|#eHw>$bZSh^ zdUW>j!!H~R3=Y3{ec}>eU~n)OY+zt;cql*w$s*sd=zRpwGj3t#KWrx&eg*$-^56g3 zbNi9UkM(w}56u1Y;qPx{FS|!#xtHQ2ULCwHxBK%0X;Z$tVr2}IlGkky$$QU!_{(ga zud}Td-8}p+V$J(gfA=n(^k@G6zY~|;Fxr#n|I7c_^P)@jMs@!MP3tb~`zyG#Z=+l8 zr)TR|9uyQcU9wN|)oP7Z58@e%{!eQPoaxA<;rVJpq@r!?j}>{RzU@)i-emBvMk?gt zL;1kNaTUMZul(4t%53SjYl|Q2+bs$@`(Z^#lOjW<#)PgVJ*WN$i?}hYx{@6C_}jn# zSBv=#W?s$yvwF?155fI+j@vI{+xy{L|B8qE_Zw@7-?g$0sQ$3kZYf(!eZ32#GDD^M zgsM9)m3scUY>uh7{1t!ybs@ju%H>wcr(NTfv{7hm*^8JYD%e+sp39tP0wf>1J}U72oEHC1o!uSg-aQtks&Xk`7|!-) z@h|+Bxb(dg)UtWCy)PoSSw-!ZvHgEtZ)W$_=Z|kir7xel{KJo*QR^(DT@HV<@B7kG zz57;kp}u?hTbr(3x5KX;-7a{s;j@O8_+@?_TcP}%cb0!O9`h68=m$dv?|8tlw*|s$~7n+mI|- z^uJIlhfyJcMPY&SqUTR;1+R*keEMR<*OxoXc7D4e-FsEbKbLy{7lXyw&}>w~oa1y<7iI?ksP% z^bB9E#apj_o%1nmHUozUBgcz5FFd!d`t>Ah-gfOd3%_jM5M$#1Gf#YsI=ypw z#+|*%#k0S3NUnLi^eOY|{W_PT&1>eIWWQFmq{wJNG{(ix( zg)43=?c45B%i!eBz%=Fa)0sOb_ZKJrUU%NUcVd0RB1HzqQ-TdgoXY(EF|kj-~Q{Mg|6r4&(H5f9gH1Z*hN7B)W-#fq}u()z4*}Q$iB}S?jd% literal 0 HcmV?d00001 diff --git a/images/DSpeed.png b/images/DSpeed.png new file mode 100644 index 0000000000000000000000000000000000000000..b252ab65166cbc4b286a69cecabc44b7c273a4ad GIT binary patch literal 5488 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 literal 0 HcmV?d00001 diff --git a/programs/Makefile b/programs/Makefile index 3535ec5d8..8332871bb 100644 --- a/programs/Makefile +++ b/programs/Makefile @@ -30,7 +30,7 @@ # fullbench32: Same as fullbench, but forced to compile in 32-bits mode # ########################################################################## -VERSION?= 0.3.0 +VERSION?= 0.3.1 DESTDIR?= PREFIX ?= /usr/local From 8d8d59e9598afc026ff854ceba61ab19731fcf21 Mon Sep 17 00:00:00 2001 From: Yann Collet Date: Mon, 2 Nov 2015 02:44:43 +0100 Subject: [PATCH 2/2] Update README.md --- README.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index d670002fd..d8766656f 100644 --- a/README.md +++ b/README.md @@ -25,10 +25,11 @@ For a taste of its performance, here are a few benchmark numbers from a number o Zstd can also offer stronger compression ratio at the cost of compression speed. Compression speed is highly configurable, by small increment, to fit different situations. Note however that decompression speed is preserved and remain roughly the same at all settings, a property shared by most LZ compression algorithms, such as [zlib]. The following test is run on a Core i7-3930K CPU @ 4.5GHz, using [lzbench], an open-source in-memory benchmark by inikep. -![Compression Ratio vs Speed](images/CSpeed.png "Compression Ratio vs Speed") -![Decompression Speed](images/DSpeed.png "Decompression Speed") - [lzbench]:https://github.com/inikep/lzbench +Compression Ratio vs Speed | Decompression Speed +---------------------------|-------------------- +![Compression Ratio vs Speed](images/CSpeed.png "Compression Ratio vs Speed") | ![Decompression Speed](images/DSpeed.png "Decompression Speed") + Zstd entropy stage is provided by [Huff0 and FSE, from Finite State Entrop library](https://github.com/Cyan4973/FiniteStateEntropy).