update* performance

Hashmaps
Lists
Sequences
Vectors

Aside from lists, update* version 5 is about 50% faster than version 4.

See the overall summary for benchmarking details. The benchmarks displayed in this document are defined here.

Hashmaps

update* version 5 performance improved to within 8% that of clojure.core/update.

(fn [n] (update (map-of-n-key-vals n) (dec n) inc))

Benchmark measurements for expression `(fn [n] (update (map-of-n-key-vals n) (dec n) inc))`, time versus 'n' arguments, comparing different versions.

(fn [n] (update* (map-of-n-key-vals n) (dec n) inc))

Benchmark measurements for expression `(fn [n] (update* (map-of-n-key-vals n) (dec n) inc))`, time versus 'n' arguments, comparing different versions.

Lists

Performance on lists did not perceptibly change between versions.

(fn [n] (update* (list-of-n-rand-ints n) (dec n) inc))

Benchmark measurements for expression `(fn [n] (update* (list-of-n-rand-ints n) (dec n) inc))`, time versus 'n' arguments, comparing different versions.

Sequences

update* version 5 performance handling sequences improved by a factor of two.

(fn [n] (update (seq-of-n-rand-ints n) (dec n) inc))

Benchmark measurements for expression `(fn [n] (update (seq-of-n-rand-ints n) (dec n) inc))`, time versus 'n' arguments, comparing different versions.

(fn [n] (update* (seq-of-n-rand-ints n) (dec n) inc))

Benchmark measurements for expression `(fn [n] (update* (seq-of-n-rand-ints n) (dec n) inc))`, time versus 'n' arguments, comparing different versions.

Vectors

Version 5 performance improved by about 50%.

(fn [n] (update (vec-of-n-rand-ints n) (dec n) inc))

Benchmark measurements for expression `(fn [n] (update (vec-of-n-rand-ints n) (dec n) inc))`, time versus 'n' arguments, comparing different versions.

(fn [n] (update* (vec-of-n-rand-ints n) (dec n) inc))

Benchmark measurements for expression `(fn [n] (update* (vec-of-n-rand-ints n) (dec n) inc))`, time versus 'n' arguments, comparing different versions.