Leonardo de Moura
ccf400506a
test(tests/playground/rbmap_checkpoint2): modified length
2019-05-28 08:21:38 -07:00
Sebastian Ullrich
d3097d08c1
feat(tests/playground/report): polish cross benches
2019-05-26 22:13:43 +02:00
Sebastian Ullrich
9708e9aced
feat(tests/playground/Makefile): rbmap_checkpoint_10 benchmark
2019-05-26 21:27:08 +02:00
Leonardo de Moura
0f43c2e2d9
feat(library/init/data/array/basic): efficient heterogeneous Array.map
...
This commit also removes Array.hmap.
Motivation: I wanted to use Array.hmap as an example in the paper, but
I found it would be too distracting to explain why we had `Array.hmap`
and `Array.map`.
cc @kha
2019-05-25 16:32:59 -07:00
Leonardo de Moura
421da67490
test(tests/playground/deriv): implement count using UInt32
2019-05-25 05:56:44 -07:00
Sebastian Ullrich
fa7e17c5bb
fix(tests/playground/rbmap_checkpoint): do something with the list tail
2019-05-24 20:06:08 +02:00
Sebastian Ullrich
64cae92cc1
fix(tests/playground/report): only normalize runtimes
2019-05-24 19:53:28 +02:00
Sebastian Ullrich
9d7875ca05
feat(tests/playground/report): reimplement normalizing by first column
2019-05-24 19:01:23 +02:00
Sebastian Ullrich
4eab0528bc
feat(tests/playground/Makefile): add MLton and MLKit
2019-05-24 19:01:10 +02:00
Sebastian Ullrich
3255092125
chore(tests/playground/bench): update temci
2019-05-24 16:24:10 +02:00
Sebastian Ullrich
7762efc334
chore(tests/playground/report): Lean: rename GC to del
2019-05-24 16:22:59 +02:00
Sebastian Ullrich
9c31425379
chore(tests/playground/temci): more new settings
2019-05-24 15:44:16 +02:00
Sebastian Ullrich
e7276188f9
chore(tests/playground/report): simplify
2019-05-24 15:01:43 +02:00
Sebastian Ullrich
1815bef873
chore(tests/playground/temci): add new settings
2019-05-24 13:34:11 +02:00
Sebastian Ullrich
1c1d8933e0
chore(tests/playground/report): use temci API directly
2019-05-24 13:34:11 +02:00
Sebastian Ullrich
ee6c60ddfe
chore(tests/playground/bench): update Lean version
2019-05-24 11:06:02 +02:00
Leonardo de Moura
5d04027050
chore(tests/playground): scripts for using old IR compiler
2019-05-23 18:33:29 -07:00
Leonardo de Moura
5ee7a211cf
chore(tests/lean/run/rc_tests): fix test
2019-05-22 18:46:30 -07:00
Sebastian Ullrich
7106c7d15e
feat(tests/playground/Makefile): measure Lean GC% as lean::del/dealloc execution times via perf
...
It looks like the Nix CXX wrapper did this for me so far
2019-05-22 23:32:33 +02:00
Sebastian Ullrich
e5ed96798b
fix(tests/playground/Makefile): actually compile Lean code with optimizations
2019-05-22 23:23:30 +02:00
Sebastian Ullrich
c3eed47cdb
feat(tests/playground/Makefile): replace bench with temci
2019-05-22 23:23:29 +02:00
Leonardo de Moura
b8a32eed88
chore(tests/playground): add (temporary) scripts for testing new IR compiler
2019-05-22 08:47:38 -07:00
Leonardo de Moura
99d2f9931d
fix(library/init/lean/compiler/ir/resetreuse): typo
2019-05-22 08:45:29 -07:00
Leonardo de Moura
4d2837430a
fix(library/compiler/emit_cpp): tail call
...
Add temporary hack to fix `emit_tail_call`.
TODO: find a cleaner solution for the new IR compiler.
2019-05-21 23:07:10 -07:00
Leonardo de Moura
6da0fc7207
chore(tests/playground/parser/syntax): fix test
2019-05-18 11:39:44 -07:00
Sebastian Ullrich
1aa95b8ea9
perf(tests/playground/qsort): use UInt32 indices instead of Nat
2019-05-17 18:57:54 +02:00
Sebastian Ullrich
f9a924c3ff
fix(tests/playground/qsort.ml): make sure all functions are monomorphic
2019-05-17 16:46:11 +02:00
Sebastian Ullrich
fd185f8e35
feat(tests/playground/qsort): qsort benchmark
2019-05-17 16:12:28 +02:00
Sebastian Ullrich
b1a8e22ac3
feat(tests/playground/rbmap_checkpoint): add rbmap_shared benchmark (rbmap_checkpoint with freq=1)
2019-05-17 15:57:40 +02:00
Sebastian Ullrich
f78c4a901f
feat(tests/playground/report): cache misses via perf stat
2019-05-15 19:39:55 +02:00
Sebastian Ullrich
9cdcb99008
fix(tests/playground/Makefile): fixes
2019-05-15 17:57:25 +02:00
Sebastian Ullrich
a831ce85d7
feat(tests/playground/report): fixed output format
2019-05-15 17:35:03 +02:00
Sebastian Ullrich
20dde07316
feat(tests/playground/report): %GC times
2019-05-15 17:35:00 +02:00
Sebastian Ullrich
e0b45d65f7
feat(default.nix,tests/playground): Nix-powered benchmark suite
2019-05-15 13:25:29 +02:00
Leonardo de Moura
dc71fafac1
feat(library/init/data/array): add Array.binSearch
2019-05-14 18:25:54 -07:00
Leonardo de Moura
2e4f5951e3
feat(library/init/data/array/qsort): simple quicksort
...
@kha I added `qsort` for sorting environment extension entries, but I am
wondering if we could use it as a benchmark in our paper. It is a pure implementation; it is
fast; it implements the real quick sort algorithm with in-place updates if the
input array is not shared. If the array is shared it performs
a single copy and then switches to in-place updates.
2019-05-14 17:46:34 -07:00
Leonardo de Moura
5844913102
feat(library/module, library/init/lean/environment): add primitives for reading/writing files as compacted regions
2019-05-13 17:26:28 -07:00
Leonardo de Moura
c57731f8c6
chore(tests/compiler/rbmap): fix test
2019-05-13 12:30:01 -07:00
Leonardo de Moura
deb2310b6d
feat(util/map_foreach): add helper functions for traversing Lean maps
2019-05-13 12:27:59 -07:00
Sebastian Ullrich
13603060cc
fix(tests/playground/binarytrees): fix test
2019-05-12 13:43:36 +02:00
Leonardo de Moura
25879c97fa
test(tests/playground/envtest): add small environment extension test
2019-05-11 17:53:27 -07:00
Leonardo de Moura
c46608ced5
feat(library/init/io): implement unsafeIO in Lean
...
Motivation: avoid closure allocation.
2019-05-11 16:28:11 -07:00
Leonardo de Moura
9e246b365e
feat(library/init/lean): add SMap for implementing Environment
2019-05-09 07:38:26 -07:00
Leonardo de Moura
18aa7de408
feat(library/init/data): add ByteArray
2019-05-08 16:43:00 -07:00
Leonardo de Moura
b782191d0b
chore(tests/lean/run/float_cases_bug): fix test
2019-05-07 15:22:01 -07:00
Leonardo de Moura
fd25827d3e
fix(library/init/lean/compiler/ir/resetreuse): must use livevars instead of freevars
...
The file badreset contains two functions where the new `reset/reuse`
insertion procedure implemented in Lean produces better results than the
one implemented in C++.
cc @kha
2019-05-07 11:09:51 -07:00
Leonardo de Moura
ac747c5f6e
feat(library/init/data/rbmap): add erase
2019-05-04 15:58:30 -07:00
Leonardo de Moura
8db0474571
feat(library/init/data/random): random numbers
...
It is useful for creating tests.
2019-05-04 15:57:42 -07:00
Leonardo de Moura
cae5ee075e
test(tests/playground/badreset): add test that exposes a bad reset/reuse placement
...
The generated code is safe, but the `reset/reuse` optimization will
never be applicable at runtime. The issue is that
`insert_reset_reuse_fn` is not checking the joint points.
I will fix the bug only at `resetreuse.lean`.
2019-05-03 17:13:29 -07:00
Leonardo de Moura
4c9a488446
chore(library/init/data/array): naming convention
...
@kha Trying again :)
I started using the prefix `f` for the `Fin` version (e.g., `fswap` and
`fswapAt`). So, it seemed natural to use the prefix `f` for the `Fin`
versions of `get` and `set`.
BTW, is it too crazy to use `a[i]` (without spaces) as notation for
`a.get i`? The constraint is to make sure `f a [i]` is not ambiguous.
That is, `f a[i]` is `f (a.get i)` and `f a [i]` is `f a (i::nil)`.
This is doable with the new parser.
Then, we could have `a[i]` as notation for `a.fget i` if `i` is a `Fin`,
and `a.get i` if `i` is `Nat`.
Similarly, `a[i := v]` would be notation for `a.fset i v` if `i` is
`Fin`, and `a.set i` if `i` is `Nat`.
It would also be awesome to have
```
let a[i] := v in
e
```
as notation for
```
let a := a[i := v] in
```
2019-05-02 10:23:53 -07:00