У меня есть небольшая коллекция отсортированных предметов менее 50. Я часто проверяю, есть ли определенный элемент в коллекции,
это
(time
(let [a [1 2 3 4 5 6 7 8 9 10 11 12 13 14 15]]
(dotimes [i 100000]
(filter (fn [[k]] (= k 15)) a))))
занимает 10 мс, если я использую набор, однако
(time
(let [a (sorted-set 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15)]
(dotimes [i 100000]
(a 15))))
Это всегда занимает как минимум вдвое больше. Что я не понимаю, так это то, что набор должен быть оптимизирован для поиска, почему фильтр работает быстрее?