diff options
author | Rich Hickey <richhickey@gmail.com> | 2007-10-18 00:48:42 +0000 |
---|---|---|
committer | Rich Hickey <richhickey@gmail.com> | 2007-10-18 00:48:42 +0000 |
commit | 0c09fc92fe24697fe0c0373c0a730a9e4bb05cf2 (patch) | |
tree | 2fd7a4d7cf39a4fbb2e07c4fb932ebbe1b1dfa1d /src | |
parent | 83a9de7db39c25429f00d265043212943d229fc0 (diff) |
added dotimes, time macros
Diffstat (limited to 'src')
-rw-r--r-- | src/boot.clj | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/src/boot.clj b/src/boot.clj index 8698b7b7..4cec9172 100644 --- a/src/boot.clj +++ b/src/boot.clj @@ -489,6 +489,12 @@ ~@body) (recur (rest list#))))) +(defmacro dotimes [i n & body] + `(loop [~i 0 n# ~n] + (when (< ~i n#) + ~@body + (recur (inc ~i) n#)))) + (defn import [& import-lists] (when import-lists (let [#^clojure.lang.Var imps *ns-imports* @@ -573,6 +579,11 @@ (do ~@(map (fn [m] (list '. gx m)) members))))) +(defmacro time [expr] + `(let [start# (. System (nanoTime)) + ret# ~expr] + (prn (strcat "Elapsed time: " (/ (- (. System (nanoTime)) start#) 1000000.0)" msecs")) + ret#)) (def *exports* '(clojure @@ -597,10 +608,11 @@ map mapcat filter take take-while drop drop-while zipmap cycle split-at split-with repeat replicate iterate - dolist + dolist dotimes eval import unimport refer unrefer in-namespace unintern into-array array make-proxy new-proxy prn print newline *out* *current-namespace* .-> + time )) |