Skip to content

Commit

Permalink
clojure.java.io is a startup time hog
Browse files Browse the repository at this point in the history
  • Loading branch information
cnuernber committed Nov 8, 2024
1 parent 600eed9 commit f6056f9
Show file tree
Hide file tree
Showing 2 changed files with 6 additions and 5 deletions.
2 changes: 1 addition & 1 deletion deps.edn
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
:exec-fn codox.main/-main
:exec-args {:group-id "com.cnuernber"
:artifact-id "charred"
:version "1.034"
:version "1.035-SNAPSHOT"
:name "Charred"
:description "Fast (as anything on the JVM) simple csv and json reading/writing"
:metadata {:doc/format :markdown}
Expand Down
9 changes: 5 additions & 4 deletions src/charred/api.clj
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@
out of the supplier then the supplier itself will close the input when finished."
(:require [charred.coerce :as coerce]
[charred.parallel :as parallel]
[clojure.java.io :as io]
[clojure.set :as set])
(:import [charred CharBuffer CharReader CSVReader CSVReader$RowReader JSONReader
JSONReader$ObjReader CloseableSupplier CSVWriter JSONWriter
Expand Down Expand Up @@ -51,8 +50,10 @@
item
(string? item)
(StringReader. item)
(instance? java.io.File item)
(java.io.FileReader. ^java.io.File item)
:else
(io/reader item)))
((requiring-resolve 'clojure.java.io/reader) item)))


(deftype RotatingCharBufFn [^{:unsynchronized-mutable true
Expand Down Expand Up @@ -414,7 +415,7 @@ user> (slurp \"test.csv\")
(coerce/->predicate quote?-arg)))
sep (unchecked-int sep)]
(fn
([] (WriteCSVData. (io/writer w) (AtomicLong.) (CharBuffer.)))
([] (WriteCSVData. ((requiring-resolve 'clojure.java.io/writer) w) (AtomicLong.) (CharBuffer.)))
([^WriteCSVData ws]
(when close-writer?
(.close ^Writer (.-w ws)))
Expand Down Expand Up @@ -711,7 +712,7 @@ Defaults to toString for types that aren't representable in json."))
(str opt)
nil)
obj-fn (coerce/->bi-consumer (get options :obj-fn default-obj-fn))]
#(JSONWriter. (io/writer %) esc-js? esc-slash? esc-uni? indent-str obj-fn)))
#(JSONWriter. ((requiring-resolve 'clojure.java.io/writer) %) esc-js? esc-slash? esc-uni? indent-str obj-fn)))


(defn write-json
Expand Down

0 comments on commit f6056f9

Please sign in to comment.