Fork me on GitHub
#graalvm
<
2020-09-24
>
borkdude10:09:34

@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

borkdude18:09:10

That's master compared to going to keywords -> vars.