From 411d16ed1f8b712d6a569acd8804bc62a76452a0 Mon Sep 17 00:00:00 2001 From: aperiodic Date: Mon, 21 Oct 2013 15:59:20 -0700 Subject: [PATCH] Fix profiling keyword construction. Allow for dynamic keywords constructed from runtime data. Prefix unqualified keywords with the namespace they are used in, rather than 'taensso.timbre.profiling. --- src/taoensso/timbre/profiling.clj | 32 +++++++++++++++---------------- 1 file changed, 15 insertions(+), 17 deletions(-) diff --git a/src/taoensso/timbre/profiling.clj b/src/taoensso/timbre/profiling.clj index 14d33d3..fbc1a68 100644 --- a/src/taoensso/timbre/profiling.clj +++ b/src/taoensso/timbre/profiling.clj @@ -26,13 +26,12 @@ the raw profiling stats under a special :profiling-stats key (useful for queryable db logging)." [level name & body] - (let [name (utils/fq-keyword name)] - `(let [{result# :result stats# :stats} (with-pdata ~level ~@body)] - (when stats# - (timbre/log* print-str ~level {:profile-stats stats#} - (str "Profiling " ~name) - (str "\n" (format-pdata stats#)))) - result#))) + `(let [{result# :result stats# :stats} (with-pdata ~level ~@body)] + (when stats# + (timbre/log* print-str ~level {:profile-stats stats#} + (str "Profiling " (utils/fq-keyword ~name)) + (str "\n" (format-pdata stats#)))) + result#)) (defmacro sampling-profile "Like `profile`, but only enables profiling every 1/`proportion` calls. @@ -46,16 +45,15 @@ "Profile spy. When in the context of a *pdata* binding, records execution time of named body. Always returns the body's result." [name & body] - (let [name (utils/fq-keyword name)] - `(if-not *pdata* - (do ~@body) - (let [name# ~name - start-time# (System/nanoTime)] - (try - (do ~@body) - (finally - (let [elapsed# (- (System/nanoTime) start-time#)] - (swap! *pdata* #(assoc % name# (conj (% name# []) elapsed#)))))))))) + `(if-not *pdata* + (do ~@body) + (let [name# (utils/fq-keyword ~name) + start-time# (System/nanoTime)] + (try + (do ~@body) + (finally + (let [elapsed# (- (System/nanoTime) start-time#)] + (swap! *pdata* #(assoc % name# (conj (% name# []) elapsed#))))))))) (defmacro p [name & body] `(pspy ~name ~@body)) ; Alias