fix squiggle path to use correct method

This commit is contained in:
NunoSempere 2023-11-19 20:40:12 +00:00
parent f458ff8004
commit a5e0da8cd4
6 changed files with 10 additions and 18 deletions

View File

@ -29,7 +29,7 @@ The name of this repository is a pun on two meanings of "time to": "how much tim
| Nim | 40.8ms | 84 |
| Lua (LuaJIT) | 69.9ms | 82 |
| OCaml (flambda) | 187.9ms | 123 |
| Squiggle (bun) | 0.386s | 14* |
| Squiggle (bun) | 0.538s | 14* |
| Javascript (node) | 0.445s | 69 |
| SquigglePy (v0.27) | 1.507s | 18* |
| R (3.6.1) | 4.508s | 49 |
@ -85,9 +85,9 @@ I like the [operator](http://duskos.org/#operator) section of [Dusk OS](http://d
### 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 for the raw js code. 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 wasn't particularly sure that the Squiggle code was actually producing 1M samples, so I applied a [monkey patch](https://git.nunosempere.com/personal/time-to-botec/src/branch/master/squiggle/makefile#L14) to ensure this. In general, Squiggle tries to present a simple interface to the user, leading to "hiding the magic" and having a bunch of [bugs](https://github.com/quantified-uncertainty/squiggle/labels/Bug), whereas I think the right tradeoff for me is to have some simple interface that I can operate skillfully (i.e., squiggle.c).
In general, Squiggle tries to present a simple interface to the user, leading to "hiding the magic" and having a bunch of [bugs](https://github.com/quantified-uncertainty/squiggle/labels/Bug), whereas I think the right tradeoff for me is to have some simple interface that I can operate skillfully (i.e., squiggle.c).
### Python and Squigglepy

View File

@ -11,9 +11,6 @@ time-bun:
run-bun:
bun src/samples.js
patch:
sed -i 's/defaultSampleCount: 1000/defaultSampleCount: 1000000/g' src/node_modules/@quri/squiggle-lang/src/magicNumbers.ts src/node_modules/@quri/squiggle-lang/dist/magicNumbers.js
run-node:
node src/samples.js

View File

@ -1,7 +0,0 @@
I can't currently figure out how to change the number of samples from within squiggle for mixtures,
so instead I monkey patched it
- https://github.com/quantified-uncertainty/squiggle/issues/2560
- grep -r . -e defaultSampleCount
- sed -i 's/defaultSampleCount: 1000/defaultSampleCount: 1000000/g' node_modules/@quri/squiggle-lang/src/magicNumbers.ts node_modules/@quri/squiggle-lang/dist/magicNumbers.js

View File

@ -1,7 +1,7 @@
export const epsilon_float = 2.22044604925031308e-16;
export const Environment = {
defaultXYPointLength: 1000,
defaultSampleCount: 1000000,
defaultSampleCount: 1000,
sparklineLength: 20,
};
export const OpCost = {

View File

@ -2,7 +2,7 @@ export const epsilon_float = 2.22044604925031308e-16; // via pervasives.js
export const Environment = {
defaultXYPointLength: 1000,
defaultSampleCount: 1000000,
defaultSampleCount: 1000,
sparklineLength: 20,
};

View File

@ -19,9 +19,11 @@ mean(result)
async function main(){
let output = await run(squiggle_code, {
defaultXYPointLength: 1000000,
defaultSampleCount: 1000000,
sparklineLength: 20,
environment: {
xyPointLength: 1000000,
sampleCount: 1000000,
sparkLine: 20,
}
})
console.log(output.value.result.value)
}