Hi Cecil,

That's fine, but note that creating new Calendar objects has an overhead,
using System.currentTimeMillis() is a static OS call which your now()
probably uses, as well as object creation. It probably won't be millisecond
sized, but you can measure your (now) using criterium.bench to be sure.

Also note that reduce in the last line is lazy by default, so ensure to
wrap it in a doall or vec to make it greedy.

Regards

Fergal


On Sat, Apr 12, 2014 at 2:49 PM, Cecil Westerhof <cldwester...@gmail.com>wrote:

> 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.
>



-- 

Fergal Byrne, Brenter IT

Author, Real Machine Intelligence with Clortex and NuPIC
https://leanpub.com/realsmartmachines

<http://www.examsupport.ie>http://inbits.com - Better Living through
Thoughtful Technology
http://ie.linkedin.com/in/fergbyrne/
https://github.com/fergalbyrne

e:fergalbyrnedub...@gmail.com t:+353 83 4214179
Formerly of Adnet edi...@adnet.ie http://www.adnet.ie

-- 
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.

Reply via email to