From 1310dfce5f6f4b252c1a7ab147259cc8ad3e3077 Mon Sep 17 00:00:00 2001 From: fennecdjay Date: Wed, 3 Jul 2019 18:00:20 +0200 Subject: [PATCH] :book: Update docs [skip ci] --- README.md | 2 +- docs.mk | 1 + docs/BenchmarkScript.mdr_skip | 52 +++++++++++++++++++++++++ docs/assets/benchmark/binary-trees.dat | 6 +-- docs/assets/benchmark/binary-trees.png | Bin 11559 -> 11142 bytes docs/assets/benchmark/fib-recurs.dat | 6 +-- docs/assets/benchmark/fib-recurs.png | Bin 9407 -> 9799 bytes docs/assets/benchmark/fib.dat | 6 +-- docs/assets/benchmark/fib.png | Bin 9174 -> 8935 bytes docs/assets/benchmark/method-call.dat | 6 +-- docs/assets/benchmark/method-call.png | Bin 10713 -> 10453 bytes 11 files changed, 66 insertions(+), 13 deletions(-) create mode 100644 docs/BenchmarkScript.mdr_skip diff --git a/README.md b/README.md index 480fb803..8095958f 100644 --- a/README.md +++ b/README.md @@ -13,7 +13,7 @@ Gwion is a programming language, aimed at making music It aims to be simple, small, [fast](https://fennecdjay.github.io/Gwion/#Benchmarks/), - [extendable](https://github.com/fennecdjay/Gwion-plug) and embeddable. + [extendable](https://github.com/fennecdjay/Gwion-plug) and [embeddable](https://github.com/fennecdjay/Gwion/blob/master/src/main.c#L18-L31). ### simple example code (hello_world.gw): diff --git a/docs.mk b/docs.mk index af87eff9..e4bbbe1c 100644 --- a/docs.mk +++ b/docs.mk @@ -30,6 +30,7 @@ doc-build: $(md_list) $(DOCTOOL) build doc-deploy: $(md_list) + -@$(call _docserver_config) @$(DOCTOOL) gh-deploy @$(MAKE) -s doc-clean diff --git a/docs/BenchmarkScript.mdr_skip b/docs/BenchmarkScript.mdr_skip new file mode 100644 index 00000000..8747ce9a --- /dev/null +++ b/docs/BenchmarkScript.mdr_skip @@ -0,0 +1,52 @@ +# Benchmarks + +@``` benchmark.sh +@[[shebang]] +@[[languages]] +@[[options]] +@[[functions]] +@``` + +@``` shebang +#!/bin/sh + +@``` + + +@``` languages +#those must match! +language=("gwion" "wren" "lua") +extension=("gw" "wren" "lua") + +@``` + +@``` options +test_dir="tests/benchmark" +plot_script=bench.plot + +# runtime options +@[[runtime]] +@``` + +@``` runtime +# allow this to be set by environment +: "${repeats:=10}" + +@``` + +@``` functions +# bunch of stuff here +@[[run]] +@@[[get_list]] +@@[[get_test]] +@@[[plot]] +@@[[print]] +@``` + +@``` run +run() { + perf stat -r"$repeats" "$1" "$test_dir/$3.$2" 2>&1 | + grep "time elapsed" | + sed 's/ *\([0-9]*\),\([0-9]*\) .* seconds time elapsed *( +- *\([0-9]*\),\([0-9]*\)% )/\1.\2 \3.\4/' +} +@``` diff --git a/docs/assets/benchmark/binary-trees.dat b/docs/assets/benchmark/binary-trees.dat index 2cd7956a..e88f80a1 100644 --- a/docs/assets/benchmark/binary-trees.dat +++ b/docs/assets/benchmark/binary-trees.dat @@ -1,3 +1,3 @@ -gwion 0.19202 0.54 -wren 0.239317 0.22 -lua 0.32971 1.33 +gwion 0.187146 0.38 +wren 0.233171 0.14 +lua 0.31488 0.72 diff --git a/docs/assets/benchmark/binary-trees.png b/docs/assets/benchmark/binary-trees.png index 109747f5cdf036bc3d63cc0c3eebefe87c4bc73c..cc8d6afe7158f3f50513dcfaee63c278623059d6 100644 GIT binary patch literal 11142 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 D%g7ZQ literal 11559 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 CWRb)G diff --git a/docs/assets/benchmark/fib-recurs.dat b/docs/assets/benchmark/fib-recurs.dat index 86f9eb6e..98da6400 100644 --- a/docs/assets/benchmark/fib-recurs.dat +++ b/docs/assets/benchmark/fib-recurs.dat @@ -1,3 +1,3 @@ -gwion 5.3284 0.22 -wren 13.7413 0.56 -lua 7.5237 0.31 +gwion 5.3189 0.35 +wren 13.6491 0.34 +lua 7.3582 0.58 diff --git a/docs/assets/benchmark/fib-recurs.png b/docs/assets/benchmark/fib-recurs.png index 5ee19f84361fdc7908609103777004efd7904dea..cf675fc5e7bc45d363413e22d7fa142c947ff257 100644 GIT binary patch literal 9799 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 literal 9407 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 diff --git a/docs/assets/benchmark/fib.dat b/docs/assets/benchmark/fib.dat index 3247b482..d0fa45fd 100644 --- a/docs/assets/benchmark/fib.dat +++ b/docs/assets/benchmark/fib.dat @@ -1,3 +1,3 @@ -gwion 0.086983 0.46 -wren 0.21537 0.82 -lua 0.21401 0.71 +gwion 0.085745 0.58 +wren 0.216044 0.35 +lua 0.21337 0.60 diff --git a/docs/assets/benchmark/fib.png b/docs/assets/benchmark/fib.png index 758382a026b901e8fd423bfc75fabc81a2c7ffbe..99d6e11b686d67a57965edad5b47550c9f39780c 100644 GIT binary patch literal 8935 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 U4RwM@9YM}&>7C9viM#bb0Ea;*P5=M^ literal 9174 zcmeI2cT`jRw(nO&1*NGVy;!z_8>J}(fdE^Y4G=YeNVCy?=HTo8oqx9xwZ7h-Ju2yzIyp!Umk&zPA( z!u4w_^wkCY{(Zlx>~u9ep>}D%>|KGIv4*Kq*mpweQxg+!H3eHDoega|btxIsF1XB2 z7x^x!(t;+t4(acneL{5$(+1xo&Y!y0U}*h9xc)sKr|ue7ZU3&z6@-CPB+i4V!xD#@ z>r9K$4)!L8_2Z6z3$P~kA4HI0L!mYX_!7z_38VhsybNb)PV+B>uKQv-Gk2%>iT7mbdN-pDsU5h#7Ho)e4h&c4|_am=!@Hi$dk z`^N=k<;r*O-jV3D9tXmA%sxgKR0kM^y{{M;yb-N`!XYy4zAi|%&hORBHHm%pO!wNg z@Mq8RZq@iJZ>=@w2yr@|-pS*4_2$h|>(0zNA^gchhlU?>o1DLR5l0R|+Ygo;!*EMR z>^DOK0|M$E>|z#(X68EiCL<%yFx!~}r7Dctov^yTj`#99D_a-Ln=E?K&8=WSt*S-S z4<*{z*f=vY6WZ9^Q&Kn&9^AEiHw>M6sQWRdhAD5#{rq!% zcelrQAt~y#LUciUs{H9 ze~|93UAyuvnwP0mW+ob>xo{5b|uZL5DF zmaZK;S!U4`b5;kl6yd%G@em{) zBp>~&SDhioU?%cg`21d5o9-OrN?#v0x24xIHeGLTxJ>utZB{0a-xtCx%0}BQO?FO9 zOoW7l%vG$<5=p)aE@NMx9o3ACi0J6(_!_TFm>noKCD04V!!gM0STQ9ozkdd{IXio% z>OO;vj0`ikc$wQ&`qHbwOXFBj$&Y7 z=*~5ro0#yL>60lPtg!8UKhd6Uqi@&y{@&>4XMNw{UEOcL$*~!jnkwJ^?N`VIHqkJ; zz$5`V$ErNDk>8$VWMt6YR$6WjdXE<{o{^AfUbw%ou%NuT5T+n6FMuBz8Hqf3W27vO z!;HysQ@`?dZJ?&GPsf^Ja_hKfi$ccRx7RsSi;9X!ngWtW?M!hfcBR_dT39>}TkV&U zhmRcjm}e#ZDpXk6mpazyP_dSlkzrNi&#I)Pq!}up%bEJ_UCUi*H~GHCXmn6e5VyF| zcn=3B=NVYnj~~y~3F+uGudaI5ncuye(rG(Zj;R;<`CGJvZ0fO+vj{XD>I&g>+ryUYwVg2OBv9+rB2`03N9p`mQm3;sXB(n4f>9zmaRLGY@NA=b{&Gs)U1_W6p`jsSCF*VW6h=`oCM-epqMco~OGj)a*PW`# zP1QL_lSSL##9+3AS6d?VY~{DQJ(7!%T1`vc8@-xSFGUGNt;`Otw_TFJtc`}FP^iG9 z7zK}}PHHjZrZKBhdzw~5Gi+ZR2Cs(?_*89qW{g7NK6vnK#onlhh|%xgwc?cqySs_) zt^Vx7N_Kr82peSKPz;H%MQ=^kB#(^HsM-mpi{pviEW%0y@bvfZ3#Vl5Yt1C#Q*u&M z)%!P^37h1Nz0{?tZXa)NfoS~7tlN_J?0tk?$)RjPLsz$TtTCFOj}HPoJT6WNl!~(J zcz8xp(JF0e%1}+%Yji(>K*;a)UY}}yjV5{LfB4`!SmG8XVXA~*o_>F?K@o#N+x84U zSbtE_*&bjL{_53@8#jvK=)$Y3tLwBy)5hjX<<@rz!bDQy;ah7zz6%Np=2mXfUWn;$ zXC5c=r=A{zx&k=Hq`W(Iu$%br^)FUPgvzuu4abhd!7x&Y>MtNmjg72(_S`72#%gHz z6NyABLBAlkFieT|hAiS!AW=soFh-gWm3c9;35be|%kr?m0f8OV3=?8yW}aHXKd9(} z0aDxJHy5*VE83J4B_$odJU`ai+1ZCyzVn7p+1K0Ne)c{Cg!l;^s(PrSqM~ACWOVW3MMuZ^udhx! z3>4jxjTXj@AD$>i5R9a&$&;C9iHir$APEi&a79$PP`eQo!6-+YOxi=O3iN(Q z-W@DOGTB9$7jY6E{tvtjyQ2SJEc4 zSXo(f1P&s8N{5AqmzS3zIR({Ty?XU_f#Ji44?{G_;H2h?JUcV7US3|WUcG`)E-o%M z&-a4;f)y8!<3;?|e-a)Z7#QFX(Y|Y85%Bmih|SDEaej98sne&ap+S_U*qcU1F;AZk zQz&S+$qqpU_v?CkzCXT*{M*y?^_75t08Mput7ut6-~cCz2rXg|VotOc4^Xm(K55w28R^Ow;wvs9OlKd;c1OmX)QguPe;8PA$ns zXM-M0vD;c&e*XNKiIvs3#MO$x#)PPls1ZWjc57w8r4;6E5$BawQK6))OoB{6&|p9k zDnB#INlLyeF7EZxadF9q@tNe#jU+=x-OJ4EF*ihCC5Nrdx?{0!Muq(|g)R;?i(a3r!#p`$oQQfD3c0rugjM&!#T!cv5?EHtuu*4 z4;-$K-E;o!-8m*~CLxi#v9U2fKi|{S)6&vH zqtQNo{J21_BRMT7%$0#PH8)S29DSj0;xzLaK?Wo`F(ecgi!LYg_^}B`#+g;UJgte_ zVHLx|w{W^zCgdq$H=IfSBUK2(bm(7~f6^K_>iSJhPU__t@p5vev`-v3aG<`vzQn-j z%9W=vF#`McC1hH|&ZlQ}2=ifZuFB19aEM*h{rda+$z<{=u1gm#Jn6J%Wn+`&3jya@ zMjp9S7iu?HA|oy?j=|9F8Bd-%Rj{RFY;0V~3Xc+;)csssTy$dOp2fxra&d8Sa(-~3 zG!+&We*OAYK|D_Cj{h=C4~azDm5)LWeLRR7sw5Dg#JGMvqHuyjv5t4J)*{a{(L^GvkzXS416IPaPB~Qj){nv7C9zLnD0cYQjPWxfBN)EJ6B|C z2^Zbi1s1Yh)eDcexO*4M78zODvC&bu0ZEP}-bW!1L&bL3=J(DPr$?JN$CZ0g$Dopg zlm<65{lwg~wBur8Qxz85zgW@Ok^lbv`ygOV_}9_V;3gJvbRQwFAERFmA3h8ou6)%1 zixrHTabNe*-hrru6^-yZ{#CH z+~xM|5xQ{k+qYo7aZqWj5JVBg=*z)B4^AR^#a2Mx^*pu{gI{)~T#+c7{|F`ojJ=_u z;oiM_BgKtrRSfKJjY|ua>ll%Qx#A;LCMG6pYir-Y7U$(9CMGT|Ej@nxm|PcDNglaL zw706fbG0F}+UyF}tu;x#uYezIujoAb>zBKGSy&)51O^3(iHnaBb$1}U1^<&69?m@s z`|1Z$^RLT4Z4Jy+b{6I2*n=qn<0~I4e)w=AoRy$jP(-NK!I@@e>S3|Pw&xLq_SE~o z7`lVCE<2Ex08oqQXgnCC>FH^J8VLyru?ilA1qJua&4-*8f_YDWu&CPH+!T-F05Jze z{u52rasL@U_=UG$Lqo&SBS&IZ)HE~WjsTWafcr$dt2M-McjLnTw<@SmX_Al zqbQ_>G|KRo5M)IB4u86aLyrB8Dt7l{v7Ju6_QaJbJ9yy9#_8el@$vflixf<{PCS^z zii!$4uGC$Gj#CAB(N?N@^5h9uP-;@rxqe$KE2-#4c>n$yJeoVoPzE3fYLkbYMb#uLPuH#QLGr7|jjwyWz~9i5%U!{P|i zLIlnEyZ&^On*otL51Ds;WsaSlJuEP=O_si~aryW)6O$pj#BRjwsk8du1Web^DUex6 z)2!MR%J{ztTrE^cyu7^X>gqsI&YnFBH{cE_c4kOb z0yz-rw=KlaPK=H8=36*GY1Ni;K|U5relKv0Sx~6g*H6}1fgYiBxCb=M%*?=yQsc(P z%we?UCWQE)?V9?)fvZMF13?+r|8S#nfS}9A0xhaqTU%eec+rH{j#sji{`@M$dP~dG*RLmMW@6*wa*Xlg zEr+q#mFeF0*xJ7@ab3Gsc0ghp4Mc#5ey32tPuG3=1o7R~-3{0SfJy~-5ZZpgbM*86 z@GqP^Jdgo6xw-X?jJ`S~??hPSe~;Q99vkzwdi#Y%x9cnwK8ptoA`BuAH8w6gY8_p* zfxP-pGGqU;wSTN6PXsC_E9+*l^F8pP+Ub|hpBEJq3y)(${Ni}MQT7fFVPRoJgOkUO z9n;H_k(2AOJY!Pksf&ZS!)<8=Ho&UnAm}p*-jD z{!?3dH=Qr|a@yIpqh<-icl}_08(1oksHiASH8r`pC&9rV459SQ{);$Wdni!_K?TCs zga`Q9Xl`R|{hV(PjE>J6Rk&T=F(6e4Qc$lgypM?83lq|19CWFMauSfD>uJKUvthSWzhUY{p zNNrB_3QJEzgP5|ivZA7*tgP&rGao=C-@SWE1Me0E-{k?dHJisUKmz)Yjx>Y1vGE`f z+}VP2<1GkUn}^i;9@^D~vl9aOpTqX9rTl+|r* zZBVS7f@;1t@E~EmpCll>nXXK?0!-YjyydN>)%Yb`q%Kr2Ix31%v>YT+@lwIV-qrO( zr}e25Co*z#(R?AH=RADo0c?G?F4+9WPAGDnxT>rBEG$e15^3e;Qm*e>L~)2vEPs|> zc0Kr|uV3G0XG3uz6Ws{7&2=MV`mf6?w7#LC^;SF}c}iA^ulE-4xc*r0~2k z5*(D6uW;6W7kQW@Doof|0DfLpUXDL=0nN@<8;UXm0w0(Z5fx<<4R_R)6;t5x5?r~a zm4JrH00~2vo;`a87`yLYR_7#{oDT=9R7=`p*63k%OKWSQou0lv9*2XLPk{pCoZ7k= z7I<@Uce$oM&ea|m`uDy9o6yFjq$BFO&d$#ArvNWp<*cy2?3&TO_3pZPYmMaT1k|5*E;^)e{ zDdAPXgqi+*zM7mEfe`?R7F6_fgx(9T+!y*gkTaooRaE#sEp2Rdfn4f7LmN*Hv$nBm zZ)-EbO{9`Gmx-aOwVyt5adVSO+%EN(0e&xbq2!oW=Fm$gX~VC%ug(sbg7ChW{o@nLhb zgQc3mJPV8MIvy1FRv&Q%UPv3SBe!46pO1zu&iv%4;m5c$y3xHEGic-uGk{@;-*}&r zmX?;6=LB;BD!U52QBVw8Fog~zC7^(Qet!CD%fJS!Yib76-j;fG8DgHkL2bs)>H; zxjfw)jdqATWA$7+9d3pyeAcb4tv{^H#|%;zva_?PCMGA}0XAD+YV2AqBT@q`JviQgX`va@Li~L;YMPq*dV2D6XMJcN zs?CbX1pQJIqZ>DRC(2(zkp?JGOh3mmNujA=+h_f(89(`u2E4!hwaS)a_zgelD@NjTuVXz$UVQD$ep`+MJK+hB! zxk#Upk?FN9#AfN8^^IGH90Z5>Dt4(QQMEj7C-G<%!@0lZE4L-M0{s2mX#u*1hLdx1 zxpWJ6=pR6T4}dLs54oe|OvTR?fRw#xsL$s%xC8tBq6AgS1 z4Kt{{p-ox_soqf>H%^Th~CZJZb$pFwl)@3+1WBcIi-I)r;rP zj}QJ-boxoW&p8V_J3A>UDKP6q!)#zN4N(&8Y-~9>IbAuO6+W#CHKoQ9n-G

Nm=9 zOAtyBJ|r)Spt`QKw6p;6p7g6DM~+kgWrs+B2*i7OmaPooLv6yq?cS={9aQTK^~1)7 z_rvOKKV4Kf^)NjpWpr%Jn)Ja9xYe;sk*lk#fWwxi((OOPc>q+GEqW1$!*$n{k##JT zwl=7x9&?3;*`ONh)A`NtXPP**De1n*Ve>~}D7mv(htZ$^1wE`+hoHZjes zI8C&rLa$_eiMIc!#&30X3R_B#w6}6fOx|XP1qCs)u`RExYa-y z?$ZVi4s&p5w3T0yT3esJcyVz5{%>S52L}gvU<@xba62z0HB~D{uC=aCL{ZTjq&YOc zy^cP-feZMB?p HW)J=kxzQes diff --git a/docs/assets/benchmark/method-call.dat b/docs/assets/benchmark/method-call.dat index a1f473c0..2daf68cf 100644 --- a/docs/assets/benchmark/method-call.dat +++ b/docs/assets/benchmark/method-call.dat @@ -1,3 +1,3 @@ -gwion 0.092774 0.34 -wren 0.110397 0.41 -lua 0.25987 1.67 +gwion 0.091691 0.31 +wren 0.10818 0.99 +lua 0.25820 1.48 diff --git a/docs/assets/benchmark/method-call.png b/docs/assets/benchmark/method-call.png index d4918073927219a1dac80a9b67c48c7049730ad9..65076f521b5c110b467b360d10db931f7633fe62 100644 GIT binary patch literal 10453 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