From ff29256bddb87bb8f11938458e1c0b7620f9ae15 Mon Sep 17 00:00:00 2001 From: NunoSempere Date: Tue, 12 Sep 2023 16:47:12 +0200 Subject: [PATCH] savepoint, clean README a bit --- .../out/samples-one-thread | Bin 18008 -> 18008 bytes C/out/samples | Bin 22488 -> 18384 bytes README.md | 36 +++++++----------- 3 files changed, 13 insertions(+), 23 deletions(-) diff --git a/C/C-02-better-algorithm-one-thread/out/samples-one-thread b/C/C-02-better-algorithm-one-thread/out/samples-one-thread index b7e78ead09e288d9ec110400f3ec4d1923a9d203..b2dab1412a42f19a1cb9c3d2a9b593a1e3f741f0 100755 GIT binary patch delta 53 zcmV-50LuT^i~-n;0kCKT6u}KOxw{bv#y~$2uCW>6&~YM`ShIWswk!xTDIhs6G%hfc Lu>vBqTrm6a%vBqTrm60O8b2X&ZLaHf?DuCn+|Ez?y7IO$o)Np_Op}qXh7>2JP?8 zn|XTgMWWr0|JLsu`Of{_duQ(4xijx+^u}LP8rBxMTufeW_9e!-vkk;A1YTJH?`O+d zDgG{E7qBzH&*2#UJyOO`FI?1@&^ za5?!!ZP2iuU>xa`N5wb`N7Z5dH6@N4r-Hh z=puXJ66dM>Nqk7h=>OL_P8eM;grDy+O8NhKVJN1uP2nYQ`S7!V`)ry9qk-hp*9+hy z1@PY&z!L@VrULk;0{BM-@W%__p9k*4$9Zi8kgvb#0(htZz6`hzALsRL0Qu^F8~A6P z%ETidyD0sZF|B@MqZSIs!fhQr@o;QodsvACugs(BSV zqiw9`)>yoiq14L4z1^*>rz1kmv_-qRsikU$g4Py}YhA%!E#4jr2SYt3X7E}h(Z$wX z)7YeS2V=p`&Tyxx0EuaYT3dwkx3mXitUJ~bfj3>KB-(<0 zwDbnG){aQ9v*Qlx7S$lS)fI%Ft+8;}Xn1L56(a|#LDx0ZuU@0oRMu2pnJcfz6~AZ} zmm;J^e5ScESBp`agZbs=l(D&>bD>efH7NWpl-faQ&R5|xdeP@FeM{H^mx1{g6F-Mt z0G=)v>Y^g)`|(Mf+krdNT=qGkuRrh)n9gUg8o}Skc{i&y?TgqiggpqG-_cP@tBor3 zjrxjseI%Fn7rCyFi{x4^?jI80E$|XQS>^5nk{`R;z-g_KYZ)Qq7M#`yd8I8l95k;f z3tn!bj7?i`xrULrUEmaT5dv=2ZNaVUVy^|KbyQwEEV#TSlWeC2x86qvEI73-uLmu- zj2+2#TX6BH!A%A&_$Oo~pnEO&JPW?xf|ptFlm!=$BwRXT!6~QYHEO~0ttV1%md-|C zHUhH|n2o?}1gsG_>ABzoweLiUnk;_la>mqqQt_hfsM>d^=8& zuT)ZR>lp7Z_*w^lrGsDM;4gOY=R5cX4!+dE7d!Y5m)QMz*TKK(;9qy}uQ>Q$TlwlY z>-875s`_hc-|?xYjSc<9_m(0R`b#~W)b2*SvkU$OCZ`6}{@RyNQ2UFI5Lq!DUx3v4 z29=RIXJ*Gei*_KI?4Y2~|7Wg$g^%L%Q9)Q#P?8;Q z<#CtxlwUh)Nz4+LHLHEKtEs5!ugB-9$=bDG()Ax@v*{29@9E-N@UAVeHQOiqiQ6Hh zLNn};>^@b$Gp#3%4=Xd|>g2MdGNV4I_RqhEST(7nRoCcAj~9c#DFvDSGr-Z2kgQaWZ$I!$O1JbMKE!Nz=AhY((L}4~?bJz6xiT%=y0max-p1*Zo*Rd_ zx~2Z-;fXT6#a6SbC&u;WW8^CN2|5llhDON4$tI(bq46TMziEb~Mu$oYHSWX>eeMf0 zT{*UWa9|+khkoabo|x8~PbHPvbnYnYG;QCUo$+@DOv$+n@uR!$2^u$rU zd30Dw!(BGHCfPiiY&?qI=+EoJ>2G1Ubmc@+Ie}3@Cz8!+wdIJ~KkwJ1ttOkt)c*6z zRcMwW=&J7SQ_>iX^h#xP`ws^Ouy|G6oNF`BfL|p0`zxbDKHzE+X*HZaYsNOZzor-y ze)2!<pGDx@aoTwFoU>B@9ZjvQ|V(LWV0ExdN*3lcy1cXV2Y;S2MFWQS%521qega2V0>%J3JA}`7t$KdEF^>_!?XhJb-j&aL_FfxLP+#BQ2UK2V+ zO`*LT6)Kgk@t=B!Y_pTm^OP! z6Ah!gTa_ok?1ej6`gZfBuQ{pg7AD5hx7S?y2+ytY1Lhi!S`4F{&@htg-)<}}yH_f^ zwm+IwcJj*IUZPP&b2x}9>@DAt^0^Pau~ zF5TOw>_Ia-S15a8KSrnaqo-rkInYtyx^f)c4sas~3N0Q<1wmC(SVU6JMdUF&aHY?t zMtKFp>1FR{v%|_Dck{xeGH7#?yFnfDLaR?1G~5`B{RY->V>mti9+o~ZY3l-X5tOmg z_F7k3EFiS>S(X(b7^>noiW#$@SRarRa2pvZ#Uar2*;v(cDTEAiYCkHp?db8jjkAL*jSiMZ z&DJ)-q}Bu0c)Z#4u4!b<$A3j4?Wfd1BXkd%$M1Bw2l=3xi+o@sO?E#9cE7y;9j4GG z{quB%9#v2(F%ow_zt`e+wdGj)GE@@K52X*D!XQ1Zk3AH4e?}h?bachjo?Sy|+Vg{V z^o(n?|GbhFW1jwdfgmulnWM?(W68$xq%z7MA8tlwV!8|~W8^dzKYB_#m%@CQR=lG$ z7Ki(kQP+wsquYNrxe9iCW%w1TQ<`IC;1hF7FKZzGJ2C$yt|%9v~N5$cxO zuX>Z^SYhdws2t`?*VFpwl;_E6{YCx2imAjOCQEq$`-WT-HCP`pZ~Qk0Hs@x95xXYD zZV)x%<6p=}-Y6se`C2fT^e?6vZ=kqe^Hl(-Pgf2ZC~}y>no1u%X@s>CG=EqZV!gD7 z^^-t!WnZ!x554>Nj6e>R^2swYtneP7yDOEE?PYz+K7?=I_J5!F9gp!oTLedq2qFdf z96+@+RD8iS7WTu#%2O2Wr1I2C<j*G>vcOT>QWOL%(a#^|Ghl-w_XY-F$Iq zi?7yqaqB18b&0Nu5Po9Px;lE}iCFjxzV(+}zFr6!+i{Jh@f6t){Ou9ijrKzZ>Id}& zo;%z?7(P4vY;nBa^%?g{`fV3sVte1tW-E{!yAh@)(7mATpabt@v-G>=woEp=19Tje z?(SD1ms6kzK*vGf110yrf~8|IXbQ9rbUl`o5a|7&cY_`S-2*xYseB0Z0np>1he7Ay zR{0U=V$iFwaMXeR2{Z(H6iek!&_99>g3f@BfL@9Rlr-p#pe0y0kKkFn0+hauG=Qd% zG~J+8lu4j;(Qmp|GasON z==WQYlYgdM>2nvg8am`-6?DFYalhWGQ`Bg-LHQDg{2Mm;J*K=H^4A~_SmnLB`YHBq za=$vmjf zwXqNKWsrXgx@H~55b&Hm3i%fx$6i%V9?sdHg8ZtFkZAKs?w}71zB%qMkP_+8`zk-h1IqVL*ZD`%se{gTY6o*Qj51qW=DokDzHH$)+)A0R ze~waCv8%YQtm@t~)UxG$bJvymBW242WmSQ)iq&Pl)nyA;mw8v0mGIwj522oJ)Kg6L z%wDq*n2o?}1ZE>J8-dvf{J)8Se6LErM@5evbUA6e0h>6z%SG2bgBUM{pb&kQZox(whkBEZwJ0;_5Wu?zNhW1uu6P6^9$M}=$8fU z7IcT81A^`rbg!T(K}Q807j#NcW_{Vt>BPtIC4NJ=Zq1sjd=<^NBqH&IZ$%|uu3S=` z;9T`xHC2^WODk(GG4PM6Oo-?W$c1tsEb8=@W6%j7(;<0VYyhaEqY$-J`TpI|b7?f6+{p4)NEdO1E8fg7{mmlrQ%-aO;z zW*+9ti=&b}FaNob402tuG>i8-q3p9FM%j%w&AapB^I7|a`Scf<@10tuZuTiA*C#uE z4$C(`+-#w_p4j!V8v3n>QFgO)nKv&kSIe9YElYFQJJ}p!lxQ6;!k|<+;#MZ`FFSDR zKI!jv;9mspviL*o(X|#ISDrX@0jGM#9rbME`lrY9LE!oP|4sq?Nm2i5abw`$oq;_o z@VjW^4Hy5u3|c5YuW;FXw(4Ti&RvE4A&q=~PIA))r{%*8a2Gp0ABuSZPmcrbR?|rc zXMSD=9IMP}`Ex7Qiz2$)I_6gZ`e)NPiu;2HD+14o z2a!h6#%%@axfghO(dl{ePyzkN3*gTHr}#6!rBf)r$o0LfRm3eW#FGW;DM23Q^XEL^ zK6}-iyNv69n#udIRH6H2IYm?$iEU-J4mge1iL!!FTMu|{NF@; z3m0wDqoTh}B7Zgs>D^r4%Q_w7dq42c+G-F?ODx_KPvDoU7M44kq{X|m7CN2OgCjhl zsMgjQy(QSGh2qgzj}}byvKAaM>I}!jp~~e|%c}D$(J`P7Ef|Xhw`t)>Jhlyoe}Y|M zEtKf$+6EH~r$IArQ;oK^c1Ce-Nx0S%r1pB?WKVaesoIn1s?_MPQ)>i=h{Vrb7DUt5 zZU{6gnzFu*4prG(2{EniruBiw`Zab5KZ6AbC;K!-6*Z`J8<@7P;hNQf2JM=)Yp+u_ zY8wNq8x*RQA8~5wN$~#i15SRw^+1z2DP;$(-QZ`UKJIiFo$|7nf01e7P%s{3v0x;m zQJmr|5z`{k7*1iC=eTkQz5IT8&dS;<9T4jbN7~};yq;*6mWXt;q7HP)e%343^ipx$ zD~HgDtvtugEKTx})2a+-tF(AjtERJSmMT`DMKRvmZ9!yMI1=K=+blZhv-2#OMG7a7 zrwEC0)XbJ7{9sxz9yZ;y9B|9Ine(7E5os}8a30FjLOoHf9Wkc^d-d0#tx!iqOZ0?8 z%*gVVL>E%hIG^YA&dd@@b#YwIu4Cjl4(&y@$q|W1Sudtsdq->hiW+qBmYyEbLw=Z! z#vkJ*2EM7@)^GAeC?MQI2S)|%jT(;gLws@qG2sYJYaCKEXOCrww7596C@~6}1nHP# z-m{Cg^M-JPvXV{#iuPK=x1&Yt`9Zs@tg>fY7a9hQ#|+voOE`lVj&-xjNHiXOl+ zyJOMra4f#f0^O46z_H+tkbnZK>zBlXZH%k82YcFCWoTOjO&ByDGbFc#V?7g)8 zi-kLbWFSi2opDylhqe;M%C;z2D)fX~SYt3hErcmmT(U-%HXlv7X3kobA630qr44 zHMx&3|Nn$jU-FW^16z;9UhbnUUjh)9)HApoFYyl{pxl-1%l$U_|3thZFf{+@l6G<& zzYC1wC++1vf0OtkNBL#Fq`jnPz}RZf{6f3Rpt2oVhqRMCy&FWBY~SlQBwk_f)Tg$r zSGj0ksGA~bf0>CG1!-@kGIy-1e%ZeG!GyNaYVeW%$n}SQzmUFL?bWLc?z@hJlkG~~ S@&fiJzhr2f>o9Pz?7skg%`2+_ literal 22488 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 diff --git a/README.md b/README.md index d67d9901..05796f4a 100644 --- a/README.md +++ b/README.md @@ -16,9 +16,9 @@ result = mixture(dists, weights) # should be 1M samples mean(result) ``` -I don't particularly care about the speed of this particular example, but rather think that the speed in this simple example would be indicative of the speed when considering 100x or 1000x more complicated models. As of now, it may also be useful for checking the validity of simple estimations. +I don't particularly care about the speed of this particular example. However, I think that how fast some approach is on this simple example might be indicative of that approach's speed when considering 100x or 1000x more complicated models. Having many different approaches computing the same model may also be useful for checking the validity of simple estimations. -The title of this repository is a pun on two meanings of "time to": "how much time does it take to do x", and "let's do x". "BOTEC" stands for "back of the envelope calculation". +The name of this repository is a pun on two meanings of "time to": "how much time does it take to do x", and "let's do x". "BOTEC" stands for "back of the envelope calculation". ## Comparison table @@ -77,13 +77,13 @@ Although the above paragraphs were written in the first person, the C code was w ### squiggle.c -squiggle.c is a minimalistic version of squiggle focused on understandability and being self-contained. You can see the code [here](https://git.nunosempere.com/personal/squiggle.c), and the code for the specific example [here](https://git.nunosempere.com/personal/squiggle.c/src/branch/master/examples/02_many_samples_time_to_botec). +squiggle.c is a minimalistic library focused on understandability and being self-contained. It grew from the initial C code in this repository. You can see the code for the library [here](https://git.nunosempere.com/personal/squiggle.c), and the code for the example we are discussing [here](https://git.nunosempere.com/personal/squiggle.c/src/branch/master/examples/02_many_samples_time_to_botec). ### NodeJS and Squiggle -Using [bun](https://bun.sh/) instead of node is actually a bit slower. Also, both the NodeJS and the Squiggle code use [stdlib](https://stdlib.io/) in their innards, which has a bunch of interleaved functions that make the code slower. It's possible that not using that external library could make the code faster, but at the same time, the js approach does seem to be to use external libraries whenever possible. +Using [bun](https://bun.sh/) instead of node is actually a bit slower. Also, both the NodeJS and the Squiggle code use [stdlib](https://stdlib.io/) in their innards, which has a bunch of interleaved functions that make the code slower. It's possible that not using that external library could make the code faster. But at the same time, the js approach does seem to be to use external libraries whenever possible. -I am not particularly sure that the Squiggle code is actually producing 1M samples, but also have no particular plan to debug this. +I am not particularly sure that the Squiggle code is actually producing 1M samples, but I am also not in a rush to debug this. ### Python @@ -91,7 +91,7 @@ For the Python code, it's possible that the lack of speed is more a function of ### R -R has a warm place in my heart from back in the day, and it has predefined functions to do everything. It was particularly fast to write for me, though not particularly fast to run :) However, I do recall that R does have some multithreading support; it wasn't used. +R has a warm place in my heart from back in the day, and it has predefined functions to do everything. It was particularly fast to write for me, though not particularly fast to run :) R has some multithreading support, which I didn't use. ### Lua @@ -107,7 +107,7 @@ stack traceback: make: *** [makefile:14: run] Error 1 ``` -I also appreciated the speedup when using the LuaJIT interpreter. You can install it with commands similar to +I also appreciated the speedup when using the LuaJIT interpreter. You can install LuaJIT with commands similar to: ``` git clone https://luajit.org/git/luajit.git @@ -124,31 +124,21 @@ Overall I don't think that this is a fair comparison of the languages intrinsica ## Languages I may add later -- [ ] Julia (TuringML) +- [ ] Zig - [ ] Rust +- [ ] OCaml +- [ ] Forth +- [ ] Julia (TuringML) - [ ] Lisp - [ ] Go -- [ ] Zig -- [ ] Forth - [ ] sh/bash, lol? -- [ ] OCaml +- [ ] Dagger () - [ ] Haskell - [ ] OpenCL/CUDA (e.g., as in ). Seems like it would be overkill, and also the code would be way more complex. But maybe worth trying? -- [-] Stan => As far as I can tell, Stan is designed to generate samples from the posterior distribution given some data, not to create data by drawing samples from an arbitrary distribution. +- ~~[ ] Stan => As far as I can tell, Stan is designed to generate samples from the posterior distribution given some data, not to create data by drawing samples from an arbitrary distribution.~~ - [ ] Maybe still worth reversing the process? - ... and suggestions welcome -## Languages added so far - -- [x] Squiggle -- [x] Javascript (NodeJS) -- [x] Python (CPython) -- [x] R -- [x] C -- [x] Nim -- [x] SquigglePy -- [x] Lua - ## Roadmap The future of this project is uncertain. In most words, I simply forget about this repository.