test(tests/playground/badupdate1): add test for exposing performance bug at struct_cases_on_fn
``` ./run.sh badupdate1.lean 4000 8000 test1 2.12s 8000 test2 1.11ms ```
This commit is contained in:
parent
3c52183e3c
commit
240ca3fc68
1 changed files with 23 additions and 0 deletions
23
tests/playground/badupdate1.lean
Normal file
23
tests/playground/badupdate1.lean
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
structure S :=
|
||||
(vals : Array Nat) (sz : Nat)
|
||||
|
||||
@[noinline] def inc0 (a : Array Nat) : Array Nat :=
|
||||
a.modify 0 (+1)
|
||||
|
||||
set_option pp.implicit true
|
||||
-- set_option trace.compiler.boxed true
|
||||
|
||||
def f1 (s : S) : S :=
|
||||
{ vals := inc0 s.vals, .. s}
|
||||
|
||||
def f2 : S → S
|
||||
| ⟨vals, sz⟩ := ⟨inc0 vals, sz⟩
|
||||
|
||||
def test (f : S → S) (n : Nat): IO Unit :=
|
||||
let s : S := { vals := mkArray (n*100) n, sz := n*100 } in
|
||||
let s := n.repeat f s in
|
||||
IO.println (s.vals.get 0)
|
||||
|
||||
def main (xs : List String) : IO Unit :=
|
||||
timeit "test1" (test f1 xs.head.toNat) *>
|
||||
timeit "test2" (test f2 xs.head.toNat)
|
||||
Loading…
Add table
Reference in a new issue