Prismatic/plumbing — pull request #12 by codyrioux (2013-10-29 17:28:43+00:00)
Title: Altered map-vals to preserve sorted-map types which fixes #11.

What kind of performance hit to the base case is acceptable? Here is a rather naive test on a 1000 element map, given the similar standard deviation we can fairly safely compare the mean at a 1.4% performance hit.

```clojure
user=> (def my-map (zipmap (range 1000) (range 1000)))
user=> (use 'plumbing.core :reload-all)
nil
user=> (bench (map-vals inc my-map))
Evaluation count : 157740 in 60 samples of 2629 calls.
Execution time mean : 387.318022 µs
Execution time std-deviation : 40.596982 µs
Execution time lower quantile : 365.317478 µs ( 2.5%)
Execution time upper quantile : 513.232116 µs (97.5%)
Overhead used : 6.438181 ns

Found 7 outliers in 60 samples (11.6667 %)
low-severe 2 (3.3333 %)
low-mild 5 (8.3333 %)
Variance from outliers : 72.0586 % Variance is severely inflated by outliers
nil
user=> (bench (map-vals2 inc my-map))
Evaluation count : 163440 in 60 samples of 2724 calls.
Execution time mean : 392.644723 µs
Execution time std-deviation : 43.625109 µs
Execution time lower quantile : 365.288296 µs ( 2.5%)
Execution time upper quantile : 518.739610 µs (97.5%)
Overhead used : 6.438181 ns

Found 6 outliers in 60 samples (10.0000 %)
low-severe	3 (5.0000 %)
low-mild	3 (5.0000 %)
Variance from outliers : 73.8134 % Variance is severely inflated by outliers
nil
```