From c7d156e8d78cb35ba4efa9bb89e4cf0d56243f4d Mon Sep 17 00:00:00 2001 From: Ingvar Stepanyan Date: Wed, 13 Jan 2021 13:07:01 +0000 Subject: [PATCH] Use UNALIGNED_ACCESS_IS_FAST for OxiPNG -> libdeflate I only observed ~10-15% increase in perf on single-threaded bench, which isn't much, but no harm in adding flag anyway. Fixes #833. --- codecs/oxipng/build.sh | 1 + .../pkg-parallel/squoosh_oxipng_bg.wasm | Bin 348598 -> 348541 bytes codecs/oxipng/pkg/squoosh_oxipng_bg.wasm | Bin 269171 -> 269114 bytes 3 files changed, 1 insertion(+) diff --git a/codecs/oxipng/build.sh b/codecs/oxipng/build.sh index 0f2536fa..200481fb 100755 --- a/codecs/oxipng/build.sh +++ b/codecs/oxipng/build.sh @@ -3,6 +3,7 @@ set -e rm -rf pkg,{-parallel} +export CFLAGS="${CFLAGS} -DUNALIGNED_ACCESS_IS_FAST=1" wasm-pack build -t web RUSTFLAGS='-C target-feature=+atomics,+bulk-memory' wasm-pack build -t web -d pkg-parallel -- -Z build-std=panic_abort,std --features=parallel # Workaround https://github.com/rustwasm/wasm-bindgen/issues/2133: diff --git a/codecs/oxipng/pkg-parallel/squoosh_oxipng_bg.wasm b/codecs/oxipng/pkg-parallel/squoosh_oxipng_bg.wasm index a90f2296028210ff377d476d2e84c40e478ef982..49fe70f30c9b8f8d204c63f3af70a09ecccc5aae 100644 GIT binary patch delta 13876 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 delta 14036 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 Ef6QRUP5=M^ diff --git a/codecs/oxipng/pkg/squoosh_oxipng_bg.wasm b/codecs/oxipng/pkg/squoosh_oxipng_bg.wasm index d8dc493de752c0cd41936d8cf8285743ee215106..97715f1ad9b9cb746d7989e4f6a5919bc6d1b017 100644 GIT binary patch delta 12575 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 Doh#bG delta 12593 zcmcgy3zQv2neM9U?%RD|bLWwn$=uAOx+f%)gdqVTLPAJdAuuE%dV~emvp#n{>%9R? z2=NI$DC-J{Bs)MOi6kThAucDt7%mF#MukYSN0DPx#J8(>j=Q?JyRy1xWA^*1``(#J z0tl{~oVnGH>Z-r~`u_j_>aY6z!s5%aWe$x~``z zW!cIbyIg43cBQoC_$}fpA(FAYI=%m(cuM~DQ*xhtN`4f7Psw*ZCGW+vui)>=vA3#T z?^B|yRLtN1v+-EHrBfUj`$6|ov3Yz(&yxZ-KkNNGZnjUqC?^h#zo0MVvz4L7?^^zj z-xLlzC?1{j4T)zr&-*Lf{AS+8QrtDRdU(IMYrN~Erxo5jck=J?=4Ypzj@n}brys`e zj5D6a?|+>!hTj_(@5Aq^C2aVzCC{Pig=d!7;ycdzE^f|Rb}PR-bao9l%g%WQEspn& zTq(uQv5&9(41P~v^>#eEW7R)HzVT}=IOK>=jKAr^uM2V8_^dyBhQ;BFzn8A$#-F^>c2Ruw{r9Ne147Fod19bg3?@=r4WocVka)xnlemn=V!6a`*VJZs|)euNeEqrlsS1 zZ?EEZ{OK)^r%%_8RrkyvAKuQV`1CzvKYZxa@n7zIV!F6#eEbWMkK#A`e~bAT|JAcM z6vfBK-~aRZK8jt>-&MrJa}WPcid*(Z;++sZ*(Jqc@yP^2T`q2EblBnpZQ{Z#v$2>6`dP%OIFYdtYtP@3EiA~9Z1!At))VOqkI2&y=?mSuC=A+hWOT_uO9bF>U zK^={MkHltA>`1OVUtB77G=6ZtI5$O7QM_=v^ zCR+IZyG;w*(Skq&FZuls-i`0w=(XErkkfv&U7l-G48Im#*HzP2bayv;t^Bvp)(}NP zC0wB8z%4{p;3sD_#Dds0qNm?Lw4hD)r^_qQU@7o)xhM-dr`u~m5kd)$Bd6PR z5g)8b#}Y%7qV}|3$Jfgz{_D1L&_*sQtf6c}@{zk`P(YV1o?V5Zu8xjaxIAKwRKr~4 zY=}D6FOpQHT?<@YKwkk=g}xzSp%(ge)XJ}9pO!8xVsj8IQcyFSOwM>j%!t#Ei#Ffb zYf7TPAr(-&L1d&2D1#x|f zTRB$TxGAqfC-q29NQ>5}M(Wp%_0!%!1wa0cgh~TG$T2#gDUZTM8i>qfv>E zW5OEG%_pc|SIn~c!UThXs0sLxPR2dpD_c2$qhP}3J0awkvD?=?Z7ny{v)M~ zt(Op!js~_{fVn|vSQYFv^br>zJl!L`8B_`fNPo3;mn1%+^O@_yVy!7X@Z20*(bS_= zqn>s-syJ0qF{&7y%Q$t)a2xNbm8B)%ia4jvM(wqf0L{x9ef{y?s9F;TM}L#66^tmr z7FsY$^n&>RM2p8&B9s;Qm}@E#ZqFzYT|1aOAokf!nDv5=6>Ps2IM8N+fK`#dF_5UH zq9bY@ZUv)T6U|!cd@UNy8&jHs>%5j!F7;|p0x~1cO9DB5HAqf1Ovs0>&O_Aaznr>E z%>A_pTHb_=J|?f}Z4752*!CK;p)MZs0K z4APxskg110${=CV%`S=btU+Ut1W=sA04yzQ(f0A2lvm z=b9=8j#|DV6>Y*-ysT)ni#VOz2>^LfOEwSPHeG1Tvq*S|(I=Zanq(AkTY%V0&-SsC z9lyNa0)#QeKq=tr&^L4Xt!Uq#j#^-0I^Y*90JUdh;H0=cLgdoIZrO87UK60XGx=TfjONSG41nq)iJZ8#)?8uh4{F z)Pf~EKOk$TK3oMd^_w2$AoeL@ocVJ2CAz6e5>7I0|Bn$dYq>e6m^6}%%*n_Yq14DI z8E0BD8eKJI%tXv6$|Mo}iI5Cd@~RwRY*>?;>ZFZ~swE@%QGjUAz-g=%v<`~0hOHdj z4&#kG$v7~@FBWgyrr{z&YR6z9iYMZY_x}-ZOt=}gTuwgYOpJ9#Gti`(Wdv%48QQhc z#-9qMF@vB7T}%X;Y%;6`!UlGa8*9|7ob6*LJI*-r#B6Ja#tn~*=mLX*d<-JFG>Etq z7n~y+&0@5bA_r<6lA~CpH3KugZ$-nG3d|QDmo#LpPO%v)!(-uN17co0Xhpgndb7CT zgTlJfqN2UmS+7-|_L6VjCRWCsP~eB@sgPo+23*;4y%eJ4@^KL5p?i12nf3GP0bZSe ztH;OSMr@ite6KO191I5ePWQ;T|qDY zQe_snt}Zxur%+$%S;@kO#0kmew+lBe1U+C3({!O8%4l>{YV$i%Mee19$1WaYkzdhr zWfi}jC_@G1fICRsscP7X1-@Az74`JM(fOck7>Axg`-R8nxI=Z4uz(Ww3#SGt463~lM@$^D;1E~7j3 zV*dk~L(HYGyP<8lz817WI&^m)^r(U&=BWdJ?fAod;Z@qZR;0YtASCsBt zQ?f9#Q1H|$f>UIwpnBn4-5DsbLtR`AwpZ3h^m0q|G6OZ9>dKmu(vYJ7H6GO@*Rp3(2Rph@N7O8KoRTJQh;PquWIPo4|rcIlmkpwacNK z1w^Kc1;XO&w>34A-BSq2*Nb2US&D{{!T@GPS{IXrTSbp&S_5p7HCx4Lm-Q`@hX$FR z=q+G;Wt~UDY9kxQD4{b>kQpWBi_xAdw<7XxNSIYd)-$Pypi=`Fi_BJaXeXGiORzj- zH=$jm4uOqyQlODo zNMK1%j-Q%Su4zsNU>hQ%Wq4|;-ANG#T%=Y+j84bhWK%M@g>vW%U_w=$12mh~MO>Ef zm-!P+43=fIq7;20A!HyL7FXEF5HvvwSXofx1fmc+;}psQu0^$QT673fRJWTgaSf5S z?&vbCUaZ3u;n%=X=i*ciNNuM>t16!ZKck=sfq9<;m5p0uqqt}4X zHlReBl|6N2OSefFWGW=D=Z{3dyADRG2C%xTo+f?!qES0dS$EY#Kic#)>pTNJbG5!C zIDO9yhLR9YuHP=o$(^4SJ>|Z&p;M=atHaGW$z$8a*}lWN9~%rxNoB9-6QyMSUNIBJ z%Dv(e8#CXRY`;rP8$ep$5IPzC_`VKc1;0pPW64WysgrNqB^H&tkbT1!Y24{gdUl9; zVrKHX9b%;zNItPctP=gncXyzZnaK+~#8Nywb*DJ(wX@N*+CV2+)E3wKX&fypHik`v z2r=K%Ma*p3#GG~j%Yrl7zEkw}I$Ub>0Z{&iNSIu@gLPZrBwybt1{MTC2P&Un+z-ig z30F+&NDU`uVpi`0A;T)Z4u*Aa(to#jP28(<#9AM8G;CVz4RTy(W7>cavLEsW_+ne1 z1m{{nOSr*A((j_-fDIRdb|~5q#1aJpEVVWj=0z43jFnp@u%J_AF7`ho3>~lq z^auOpg5AL~1yK!m&1??dYgp8END!BF>9$>B;WEeM0hBJAPTB~oHcZEM8I>`RK|Qz9 z9qFh|59v_P!8PVd_XiT{A@B#2D|U(bn3yfQ#DL>O5I6aUU1GRPg@a*3fy|VH>WT$qpaRvBt zOYpqVt)kV8|Fi*Eq7Lo_?=(4N^^x}tCw;aoUIZh;f28Rd8>>ONnahOi8Dek zgy1-h;U#oQ)N;7(GSOyq6q_HC&&cX*dRCcSW=lv14yW;B7#vC)?uZ-?moOC&uVnW_ zVh};Y2zVt(S5&zwtgJ$&8Y_P73}LmMQ9F$dOBfaTncd`Pp{!zq$1uh!5a4_F^sBwp;Z5C3bd5zBo=7l4>6~MFZ2h-{hE_ zKX$;l*e(TaOkz9O*1>?ecL)~+=k0@6m;`~@wDe(PK^sF&8JmRKK8O7#n|F)uWa)0< zFT^GSB*lg%#cyNq%WP>vW+a-i4{G9~y*#;Tw>W8yE}8TkB48i^3r{Y`I3>1%*te6G z;G@7oy5D2W9eb=mvTh^S%W<;`+pySmMN~~bzFW*#gO=d*5g%PBv5gvqEtny4SeOP1 zXC7n~F!=P12g-y-;mYbDM=2fik|hs{+0)ShV~~gO$-rT2+;4!|lbH{SZjcW&iZp<; zF>=>omc+XCa9hbTd>R#De@+DM)`r2sFkTGY4n}@_aBmvV!2Ql+z`cAjsHao-NNmIs zZ!!Y05PB)7n{`SH>P`xEW;VHUFi=Nn!{-y~W-(!)e(n9@1b9WY8W;ji0#tDx0-8m9 zGfLtvqQpxBeLrPk03cBB67>LOx+)2sD(YjIp>ctQwPITcIl59e?f`jPC^R!AK&S=# zN^~R{+bud`)OXDkGI#(kMYm7@{C&AxQzJRTzk~2EMIR*lMbkBG_d!yu&oC!=n;L@8 zd9{I2pb8el{Wu^7_G!dTckhus#+M}eK%COfIa+~a(-OKa>RGkEq<}uB9#lw{3@V{U z;1CBvOESPBP+A)8IwOo)kLg6(Gez%cOSiw}t2w^1ik#%LGFnlk%A3LO0gwy_`j zZHkP*ZHx`DB^6){&+G@A{TLqYhZX=$X*+rJ0Woj}XEBrCn3hj-&a6jL7Y6w>I=sR1 z!8}4+UefWP7!tOzmAH+MvEpF?o{pt9tjQsfFzyX{V+zt(P;T_{8=|#J?7h5=Up$kjIr8Y`;vE`!hqMi-9+YlQsx`xRHEVXM0 zH2`i6#^}^n0=`(^)hMh?9igbFOy#&yW}|SDPd_AP$MhK?d;#15=tqHC!j!`+Od69t zF(w3n)|hB1#~ss@7wru7*_b8`$xerKHhH2=uiP3Fq1hS}90y##Ka#DEMA%kIaG9)T)Tw4Q6cv7r22UpP1b%TMM zT$`8G8Md}SWI*=O7q*9oBpP3YAKco8_B(Vsxn#{=(KFW^nJ{vq&NEnOLkx`2O=*iA zJu*lF3}KR+_lo|Q5r6=0*WH{2FesA4Uf4TQM=K%=I#f^=hJS`5+z=^K=e@FNmKOmOWb$-7lMg#K;S=+^)6hZ_7m@hV9m$*T6*FUQzcL#! zillFvVsaTI@neD{N;~Xp<@C~wo--*IfwariTtxfE0Cs{_!DgFevAszaN$(KPO!5K| zOV-XiDw`MDB#F$O;DQMstmOHzK*rNV6xcoBl?F~&TOkXa`Q&D@wt0^1B1z8FHG*^{Ittl_K#6f)OGV!S^<(t^TUCGb~kAu3&Do@T^jk9~m z{*@THN>DBi>eWER&6a^Q0St}|oW(e1^aF5zWnn=seoCQ2dgM#1iB!otEV$;xTJFC{9d7z%Bdig zlN|BophGF0ESx7#YixPFoYs#@557(QTEJWHe1{yE zhWjtQSI)ti=Eg5RDCd+>cHAIKGsGQU~?T4ifv;lIhh zIl8@pg5)dOc2bC!4#~ z+2ZcTx4P9*$4xs*&Ky+JlT&7>KGvI|PNOb9(yu<_;PVB8in@6Fpc-)F!$K$=xr87V z&*9PaAim>ZQ$5OIfd)un#|{uxQH~23yel#^AsPlY?P%fwhyd+KJIuTAF+w@(flc#6 zv;c!ZYe?v)eK3hLY!3UGdvmD6Ay9E9awR~?dOSM--mK~)NDryxmrGT(1P9`6Tx@~Y zg3KoVS?UDGhG7*O*UVL4#1Z?(@{^U6;**Wnzee4u#PyAzEK+N1l&36FMbUXcXfaoL z7=?h%BUDumG~Rfo>JrJRXQ{6?8q3r&S$;qW=0jlFIjnS(_GN0}Nyf;2YjJoOWi<0W z+F2jXymGMxwZSKIGO^JG*ByPJR=GV{w@j^Qyb!6c<#0g!i4j#LVfgX+s*&%!fvw{s zsE0?$pk+H5xJ1poG~1RpN|n$i5Y*BpHd(W?j8qFb^-;RyOr?z)RSK#S(`HoJNG?+E nm5m!NQ75?&=W}mShYHZtCu%COp{dzdsOKD!G)h;g;d}lU37euL