1
1
mirror of https://github.com/anoma/juvix.git synced 2024-09-11 16:26:33 +03:00
juvix/app
Jan Mas Rovira 3a4cbc742d
Replace polysemy by effectful (#2663)
The following benchmark compares juvix 0.6.0 with polysemy and a new
version (implemented in this pr) which replaces polysemy by effectful.

# Typecheck standard library without caching
```
hyperfine --warmup 2 --prepare 'juvix-polysemy clean' 'juvix-polysemy typecheck Stdlib/Prelude.juvix' 'juvix-effectful typecheck Stdlib/Prelude.juvix'
Benchmark 1: juvix-polysemy typecheck Stdlib/Prelude.juvix
  Time (mean ± σ):      3.924 s ±  0.143 s    [User: 3.787 s, System: 0.084 s]
  Range (min … max):    3.649 s …  4.142 s    10 runs

Benchmark 2: juvix-effectful typecheck Stdlib/Prelude.juvix
  Time (mean ± σ):      2.558 s ±  0.074 s    [User: 2.430 s, System: 0.084 s]
  Range (min … max):    2.403 s …  2.646 s    10 runs

Summary
  juvix-effectful typecheck Stdlib/Prelude.juvix ran
    1.53 ± 0.07 times faster than juvix-polysemy typecheck Stdlib/Prelude.juvix
```

# Typecheck standard library with caching
```
hyperfine --warmup 1 'juvix-effectful typecheck Stdlib/Prelude.juvix' 'juvix-polysemy typecheck Stdlib/Prelude.juvix' --min-runs 20
Benchmark 1: juvix-effectful typecheck Stdlib/Prelude.juvix
  Time (mean ± σ):      1.194 s ±  0.068 s    [User: 0.979 s, System: 0.211 s]
  Range (min … max):    1.113 s …  1.307 s    20 runs

Benchmark 2: juvix-polysemy typecheck Stdlib/Prelude.juvix
  Time (mean ± σ):      1.237 s ±  0.083 s    [User: 0.997 s, System: 0.231 s]
  Range (min … max):    1.061 s …  1.476 s    20 runs

Summary
  juvix-effectful typecheck Stdlib/Prelude.juvix ran
    1.04 ± 0.09 times faster than juvix-polysemy typecheck Stdlib/Prelude.juvix
```
2024-03-21 12:09:34 +00:00
..
Commands Replace polysemy by effectful (#2663) 2024-03-21 12:09:34 +00:00
TopCommand upgrade to Ghc 9.8.1 (#2624) 2024-02-07 09:47:48 +00:00
App.hs Replace polysemy by effectful (#2663) 2024-03-21 12:09:34 +00:00
AsmInterpreter.hs Replace polysemy by effectful (#2663) 2024-03-21 12:09:34 +00:00
CommonOptions.hs Add field element type (#2659) 2024-02-27 14:54:43 +01:00
Evaluator.hs Add field element type (#2659) 2024-02-27 14:54:43 +01:00
GlobalOptions.hs Add field element type (#2659) 2024-02-27 14:54:43 +01:00
HaskelineJB.hs upgrade to Ghc 9.8.1 (#2624) 2024-02-07 09:47:48 +00:00
Main.hs Replace polysemy by effectful (#2663) 2024-03-21 12:09:34 +00:00
RegInterpreter.hs Replace polysemy by effectful (#2663) 2024-03-21 12:09:34 +00:00
TopCommand.hs Replace polysemy by effectful (#2663) 2024-03-21 12:09:34 +00:00
TreeEvaluator.hs Replace polysemy by effectful (#2663) 2024-03-21 12:09:34 +00:00