|
1 | 1 | using Accessors, ConstructionBase, BenchmarkTools
|
2 | 2 |
|
3 |
| -optic = Accessors.Query(x -> x isa Int) |
4 |
| -obj = (7, (a=17.0, b=2.0f0), ("3", 4, 5)) |
| 3 | +optic = Accessors.Query(; select=x -> x isa Float64, ignore=x -> x isa Tuple) |
| 4 | +obj = (7, (a=17.0, b=2.0f0), ("3", 4, 5.0), (x=6.0,), ) |
5 | 5 | vals = (1.0, 2.0, 3.0, 4.0)
|
6 | 6 |
|
7 | 7 | @btime $optic($obj)
|
8 |
| -@btime set($obj, $optic, $vals) |
| 8 | +@btime Accessors.set($obj, $optic, $vals) |
9 | 9 | # Compiles away
|
10 |
| -@btime modify(x -> 2x, $vals, $optic) |
| 10 | +@btime Accessors.modify(x -> 2x, $vals, $optic) |
11 | 11 |
|
12 | 12 |
|
13 |
| -unstable_optic = Accessors.Query(x -> x isa Number && x > 2) |
14 |
| - |
15 | 13 | # This is slow
|
16 |
| -@btime set($x, $unstable_optic, $y) |
17 |
| - |
18 |
| -# This still compiles away |
19 |
| -@btime modify(x -> 2x, $vals, $unstable_optic) |
20 |
| - |
| 14 | +unstable_optic = Accessors.Query(x -> x isa Number && x > 4) |
| 15 | +@btime Accessors.set($obj, $unstable_optic, $vals) |
| 16 | +@btime Accessors.modify(x -> 2x, $obj, $unstable_optic) |
0 commit comments