对于这第一行发现的惯用法(w∘{(↓⍺)⍳↓⍵})
,似乎没有减少搜索时间,即使第一次搜索会对数组进行哈希处理,从而使以后的搜索速度更快?
w← 100000000 3⍴'123'
w←w,[1]'321'
z← ⎕AI[3] ⋄ w∘{(↓⍺)⍳↓⍵}'321' ⋄ (⎕AI[3])-z
100000001
2892
z← ⎕AI[3] ⋄ w∘{(↓⍺)⍳↓⍵}'321' ⋄ (⎕AI[3])-z
100000001
2883
发布于 2018-06-14 18:11:18
从documentation
请注意,只有在第二次或随后应用派生函数时,保留哈希表才会有回报。这通常以两种方式之一发生:要么将派生函数命名以供以后(并重复)使用,如下面的第一个示例所示,要么将其重复应用为原语或已定义运算符的操作数,如第二个示例所示。
w←100000000 3⍴'123'
w←w,[1]'321'
f←w∘{(↓⍺)⍳↓⍵}
z←⎕AI[3] ⋄ f'321' ⋄ (⎕AI[3])-z
100000001
2782
z←⎕AI[3] ⋄ f'321' ⋄ (⎕AI[3])-z
100000001
16
w←100000000 3⍴'123'
w←w,[1]'321'
w∘{(↓⍺)⍳↓⍵}{z←⎕AI[3] ⋄ ⎕←⍺⍺ ⍵ ⋄ ⎕←(⎕AI[3])-z}¨'321' '321'
100000001
2375
100000001
0
https://stackoverflow.com/questions/50848817
复制相似问题