Details
-
Type:
Enhancement
-
Status:
Closed
-
Priority:
Major
-
Resolution: Completed
-
Affects Version/s: None
-
Fix Version/s: Release 1.7
-
Component/s: None
-
Labels:
-
Patch:Code and Test
-
Approval:Ok
Description
- with generative tests
- with examples demonstrating performance
Performance: Details in comments, summary:
(def v (vec (concat (range 1000) (range 1000)))) (into [] (distinct v)) ;; 821.3 µs (into [] (distinct) v) ;; 388.2 µs (into [] (interpose nil v)) ;; 316.0 µs (into [] (interpose nil) v) ;; 35.5 µs (into [] (map-indexed vector v)) ;; 76.8 µs (into [] (map-indexed vector) v) ;; 49.4 µs
Patch: clj-1601-4.patch
Screening note: We could use transients to improve performance of the distinct impl, except checking containment in a transient set is broken per CLJ-700 (which is not currently in 1.7). I have a new patch and direction on CLJ-700 that could provide a way to solve that if we want to move it back and push this further. Or we could just wait and refactor when CLJ-700 does go in.
Screened by:
working on this