Perf: only set bindings when necessary
This commit is contained in:
parent
4071d0f3ec
commit
c69bb0ec5f
1 changed files with 9 additions and 4 deletions
|
|
@ -96,8 +96,11 @@
|
||||||
"Low-level API. Serializes arg (any Clojure data type) to a DataOutputStream."
|
"Low-level API. Serializes arg (any Clojure data type) to a DataOutputStream."
|
||||||
[^DataOutputStream data-output-stream x & [{:keys [print-dup?]
|
[^DataOutputStream data-output-stream x & [{:keys [print-dup?]
|
||||||
:or {print-dup? true}}]]
|
:or {print-dup? true}}]]
|
||||||
(binding [*print-dup* print-dup?]
|
(if (identical? *print-dup* print-dup?)
|
||||||
(freeze-to-stream data-output-stream x)))
|
(freeze-to-stream data-output-stream x)
|
||||||
|
(binding [*print-dup* print-dup?] ; Expensive
|
||||||
|
(freeze-to-stream data-output-stream x))))
|
||||||
|
|
||||||
|
|
||||||
(defmacro ^:private freezer
|
(defmacro ^:private freezer
|
||||||
"Helper to extend Freezable protocol."
|
"Helper to extend Freezable protocol."
|
||||||
|
|
@ -281,8 +284,10 @@
|
||||||
"Low-level API. Deserializes a frozen object from given DataInputStream to its
|
"Low-level API. Deserializes a frozen object from given DataInputStream to its
|
||||||
original Clojure data type."
|
original Clojure data type."
|
||||||
[data-input-stream & [{:keys [read-eval?]}]]
|
[data-input-stream & [{:keys [read-eval?]}]]
|
||||||
(binding [*read-eval* read-eval?]
|
(if (identical? *read-eval* read-eval?)
|
||||||
(thaw-from-stream data-input-stream)))
|
(thaw-from-stream data-input-stream)
|
||||||
|
(binding [*read-eval* read-eval?] ; Expensive
|
||||||
|
(thaw-from-stream data-input-stream))))
|
||||||
|
|
||||||
(defn- try-parse-header [ba]
|
(defn- try-parse-header [ba]
|
||||||
(when-let [[head-ba data-ba] (utils/ba-split ba 4)]
|
(when-let [[head-ba data-ba] (utils/ba-split ba 4)]
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue