diff --git a/README.md b/README.md index 6e111a1c..06eaff81 100644 --- a/README.md +++ b/README.md @@ -24,17 +24,17 @@ The name of this repository is a pun on two meanings of "time to": "how much tim | Language | Time | Lines of code | |-----------------------------|-----------|---------------| -| C | 5.6ms | 252 | -| squiggle.c | 8.2ms | 29* | -| Nim | 40.8ms | 84 | -| Lua (LuaJIT) | 69.9ms | 82 | -| OCaml (flambda) | 187.9ms | 123 | -| Squiggle (bun) | 0.387s | 14* | -| Javascript (node) | 0.445s | 69 | -| SquigglePy (v0.27) | 1.507s | 18* | -| R (3.6.1) | 4.508s | 49 | -| Python 3.9 | 11.879s | 56 | -| Gavin Howard's bc | 15.960s | 101 | +| C | 6.20ms | 252 | +| squiggle.c | 7.20ms | 29* | +| Nim | 41.10ms | 84 | +| Lua (LuaJIT) | 68.80ms | 82 | +| OCaml (flambda) | 185.50ms | 123 | +| Squiggle (bun) | 384.00ms | 14* | +| Javascript (node) | 0.423s | 69 | +| SquigglePy (v0.27) | 1.542s | 18* | +| R (3.6.1) | 4.494s | 49 | +| Python 3.9 | 11.909s | 56 | +| Gavin Howard's bc | 16.170s | 101 | Time measurements taken with the [time](https://man7.org/linux/man-pages/man1/time.1.html) tool, using 1M samples. But different implementations use different algorithms and, occasionally, different time measuring methodologies (for the C, Nim and Lua implementations, I run the program 100 times and take the mean). Their speed was also measured under different loads in my machine. So I think that these time estimates are accurate within maybe ~2x or so. diff --git a/time.txt b/time.txt index 3863cd00..725c466c 100644 --- a/time.txt +++ b/time.txt @@ -1,96 +1,95 @@ # bc time ghbc -l squiggle.bc estimate.bc -.8907201178102747 +.8872657001481914 -real 0m15.960s -user 0m15.948s -sys 0m0.000s +real 0m16.170s +user 0m16.115s +sys 0m0.008s # C Running 100x and taking avg time: OMP_NUM_THREADS=16 out/samples -Time using 16 threads: 5.60ms +Time using 16 threads: 6.20ms # js (bun) -0.8867426270252042 +0.8861715640546732 -real 0m0.551s -user 0m0.527s -sys 0m0.055s +real 0m0.562s +user 0m0.540s +sys 0m0.074s # js (node) -0.8878977218582866 +0.8863245179136781 -real 0m0.445s -user 0m0.523s -sys 0m0.060s +real 0m0.423s +user 0m0.509s +sys 0m0.077s # lua (luajit) Requires /bin/time, found on GNU/Linux systems Running 100x and taking avg time of: luajit samples.lua -Time: 69.90ms +Time: 68.80ms # nim Requires /bin/time, found on GNU/Linux systems -Running 100x and taking avg time of: -Time: 40.80ms +Running 100x and taking avg time of: +Time: 41.10ms # ocaml Requires /bin/time, found on GNU/Linux systems -Running 100x and taking avg time of: -Time: 187.90ms +Running 100x and taking avg time of: +Time: 185.50ms # Python (3.9) 0.8887373869178242 -real 0m11.879s -user 0m12.129s -sys 0m1.055s +real 0m11.909s +user 0m12.149s +sys 0m1.145s # R (3.6.1) -[1] 0.8899922 +[1] 0.8862725 -real 0m4.508s -user 0m4.476s -sys 0m0.028s +real 0m4.494s +user 0m4.465s +sys 0m0.025s # Squiggle (0.8.6) Requires /bin/time, found on GNU/Linux systems -Running 100x and taking avg time of: -Time: 386.80ms +Running 100x and taking avg time of: +Time: 384.00ms # SquigglePy (0.27) time python3.9 samples.py - 0%| | 0/4 [00:00