Clojure

transducer arities for map-indexed, distinct, and interpose

Details

  • Type: Enhancement Enhancement
  • Status: Closed Closed
  • Priority: Major 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:

  1. clj-1601.patch
    25/Nov/14 4:22 PM
    5 kB
    Alex Miller
  2. clj-1601-2.patch
    25/Nov/14 4:59 PM
    8 kB
    Alex Miller
  3. clj-1601-3.patch
    17/Dec/14 1:50 PM
    8 kB
    Alex Miller
  4. clj-1601-4.patch
    09/Jan/15 10:27 AM
    8 kB
    Alex Miller
  5. clj-1601-transient-distinct.patch
    21/Dec/14 6:13 AM
    2 kB
    Nikita Prokopov

Activity

People

Vote (0)
Watch (1)

Dates

  • Created:
    Updated:
    Resolved: