Время тестирования Dyalog Idiom на большом массиве

Для этого первого ряда найдена идиома (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

1 ответ

Из документации:

Обратите внимание, что сохранение хеш-таблицы окупается только при втором или последующем применении производной функции. Это обычно происходит одним из двух способов: либо производная функция названа для последующего (и повторного) использования, как в первом примере ниже, или она применяется повторно как операнд примитивного или определенного оператора, как во втором примере.

      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

Попробуйте онлайн!

Другие вопросы по тегам