          (when (> i 0)
            (recur (dissoc m (get test-keys i)) (dec i))))
        sample))))
+
+(defmethod map-bench :transient-dissoc [_ _ {:keys [small-map medium-map large-map]}]
+  (println "Transient Dissoc")
+  (let [maps [small-map medium-map large-map]
+        samples [small-map-sample medium-map-sample large-map-sample]]
+    (doseq [[m sample] (partition 2 (interleave maps samples))]
+      (simple-benchmark
+        []
+        (loop [m (transient m) i (count m)]
+          (when (> i 0)
+            (recur (dissoc! m (get test-keys i)) (dec i))))
+        sample))))
 
 (defmethod map-bench :dissoc-fail [_ _ {:keys [small-map medium-map large-map]}]
   (println "Dissoc Fail")

  (run-benchmarks benchmarks empty-map data))

(println "Lean Maps")
(let [benchmarks  [:assoc :dissoc :dissoc-fail :hash :equals :equals-fail :worst-equals :sequence :reduce]
      empty-map lem
      data {:small-map (sized-map empty-map small-map-size)
            :medium-map (sized-map empty-map medium-map-size)

      (recur (assoc m (get test-keys i) i) (inc i))
      m)))

(defn transient-sized-map [m n]
  (loop [m (transient m) i 0]
    (if (< i n)
      (recur (assoc! m (get test-keys i) i) (inc i))
      (persistent! m))))

(defmulti map-bench
  (fn [benchmark _ _] benchmark))

