@alexmiller I don't see any meaningful changes when using clojure.pprint AOT-ed:
$ mvn clean
$ mvn compile
$ rlwrap java -cp target/classes:$(clojure -Spath) clojure.main
(def sw (java.io.StringWriter.))
;; current master:
user=> (time (dotimes [i 10000] (require '[clojure.pprint :refer [write]] :reload)))
"Elapsed time: 2307.649138 msecs"
user=> (time (dotimes [i 100000] (write {} :stream sw)))
"Elapsed time: 1542.609558 msecs"
nil
;; pprint_base.clj, write-option-table, keywords -> vars, avoiding find-var in table-ize
user=> (time (dotimes [i 10000] (require '[clojure.pprint :refer [write]] :reload)))
"Elapsed time: 2334.667132 msecs"
user=> (time (dotimes [i 100000] (write {} :stream sw)))
"Elapsed time: 1541.441623 msecs"
nil
That's master compared to going to keywords -> vars.
thx