2014-04-12 15:06 GMT+02:00 Fergal Byrne <fergalbyrnedub...@gmail.com>:
> For precise timing benchmarks, use criterium [1]. > For simple, gross timing, use > > (map #(time (foo %)) numbers) > That is not going to work, time prints the time instead of giving it back. or to convert your code to something more functional (and including defns > for now and foo): > > > (defn now [] (. System currentTimeMillis)) > I already defined it as: (defn now [] (new java.util.GregorianCalendar)) I use it for other things also. > (def numbers '(4 6 8 10)) > > (defn foo [n] (reverse (map #(* % %) (range (Math/pow n 5))))) > > (count (foo 10)) > > (defn timed-foo [times n] > (let [start (now)] > (foo n) > (conj times (- (now) start)))) > > (reduce timed-foo [] numbers) => [0 0 4 14] > I am going to look into this. > On Sat, Apr 12, 2014 at 1:13 PM, Cecil Westerhof > <cldwester...@gmail.com>wrote: > >> At the moment I have the following: >> (def numbers '(4 6 8 10)) >> >> (doseq [number numbers] >> (foo number)) >> >> The call foo generates some output, but I also want to save the time it >> took for the call to complete. At the moment I am thinking about >> something like: >> (def numbers '(4 6 8 10)) >> >> (def ^:dynamic needed-times ()) >> (doseq [number numbers] >> (let [start (now)] >> (foo number) >> (def ^:dynamic needed-times >> (cons (- (.getTimeInMillis (now)) >> (.getTimeInMillis start)) >> needed-times)))) >> >> But it looks a 'little' cumbersome. Is there a better way to do this? >> >> Also if I need to use several points in time, do I keep nesting 'let', >> or is there a better way? >> > -- Cecil Westerhof -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups "Clojure" group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.