summaryrefslogtreecommitdiff
path: root/test/cases/perf.bqn
blob: fec72971a4e414deb4c2ecb7cc0c38510f011c00 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
%DEF var V•internal.Variation  LV•internal.ListVariations  CLR•internal.ClearRefs
%DEF tvar2 %USE var  _tvar2_  {F _𝕣_ 𝕘 x: (CLR@)  {F 𝕩 V x}¨ 𝕘 LV 𝕩; w F _𝕣_ 𝕘 x: (CLR@)  (𝕘 LV 𝕨) {(𝕨 V w) F 𝕩 V x} 𝕘 LV 𝕩}
%DEF fastone (
  _fastone  { F _𝕣 𝕩:
    t  0
    n  𝕩
    @F¨ n
    { 𝕊:
      c  F•_timed @
      "wasn't fast enough" ! (n<10)  t<5
      t+ c
      n+ 1
      c10000e¯9
    }•_while_⊢ 1
    n
  }
)

# in-place ⌾(n⊸⊑)
(
  %USE fastone
  { 𝕊 toti:
    ab to•internal.Variation 10 < ti•internal.Variation 1e6
    n  {𝕊: a 10+(4)(1) } _fastone 10
    ! (4+10×n)  41a
  }¨ "Ah""Ai32", "Af""Ai32", "Sh""Ai32", "Sf""Ai32", "Ah""Ah"
)

# in-place ⌾⊑
%USE fastone  a5+↕1e6  n{𝕊: a 1+}_fastone 4  ! (10a)  (5+n)6+↕9

# in-place ⌾(l⊸⊏)
%USE fastone  a¨5+↕1e6        n{𝕊: a 1+(133¯1)}_fastone 4  ! (¨5678910000001000001100000210000031000004+0n0n00000n)  (5a)¯5a #%NDEBUG
%USE fastone  a5+↕1e6          n{𝕊: a 1+(133¯1)}_fastone 4  ! (  5678910000001000001100000210000031000004+0n0n00000n)  (5a)¯5a #%NDEBUG
%USE fastone  a5+1e6@+↕10000  n{𝕊: a 1+(133¯1)}_fastone 4  ! (@+567891000010001100021000310004        +0n0n00000n)  (5a)¯5a #%NDEBUG

# in-place ∾⟜atom & ∾⟜list
%USE fastone  %USE tvar2  {𝕊v: j<(×≡) v  {a𝕩  n{𝕊: aj}_fastone 4  !(    n +≠𝕩)≡≠a  !av¨a}_tvar2_"f" 1e6   ⥊<𝕩}¨ 1, 12, 'a'
%USE fastone  %USE tvar2  {𝕊v: j10⥊<v     {a𝕩  n{𝕊: aj}_fastone 4  !((10×n)+≠𝕩)≡≠a  !av¨a}_tvar2_"f" 1e6   ⥊<𝕩}¨ 1, 12, 'a'
%USE fastone  %USE tvar2  {𝕊v: j10⥊<v     {a𝕩  n{𝕊: aj}_fastone 4  !(10˜ n+≠𝕩)≡≢a  !av¨a}_tvar2_"f" 1e510⥊<𝕩}¨ 1, 12, 'a'

# amortized fast ⍋ with long 𝕨 & tiny 𝕩
%USE fastone  %USE tvar2  (1e6/↕10) {𝕨𝕩 _fastone 1} _tvar2_"f" 10