T
(do (time (->> [\*]
(iterate #(conj % \*))
(take 10000)
(map #(string/join \space %))
(string/join \newline)
identity))
nil) #_"4202.977 msecs"
(do (time (->> (range)
(map #(repeat % "*"))
(map #(clojure.string/join " " %))
(take 10001)
(clojure.string/join "\n")
identity))
nil) #_"3424.3458 msecs"
(do (time (->> (range 1 10001)
(map #(repeat % \*))
(map #(string/join \space %))
(string/join \newline)
identity))
nil) #_"3851.0738 msecs"
(do (time (->> (repeat 10000 \*)
(reductions conj [])
(map #(string/join \space %))
(string/join \newline)
(identity)))
nil) #_"3831.1308 msecs"
(do (time (->> (iterate (partial str "* ") "* ")
(transduce (comp (take 10000) (map identity))
(constantly nil))))
nil) #_"34.8619 msecs"
(do (time (->> (iterate (partial str "* ") "* ")
(eduction (take 10000))
(run! identity)))
nil) #_"39.1781 msecs"
(do (time (->> (iterate (partial str "* ") "* ")
(take 10000)
(run! identity)))
nil) #_"41.9111 msecs"
(->> "*"
(iterate #(do (println %) (str % " *")))
(take 10000))