Done: git://github.com/cconstantine/clojure.contrib.git

Please feel free to be brutal on the code review.  The last thing I
want is for clojure to get dirtied up with bad code.

Thanks,
 Chris

On Apr 15, 10:45 am, Sean Devlin <francoisdev...@gmail.com> wrote:
> Start by putting your code on github or something similar :)
>
> On Apr 14, 8:01 pm, Chris <ccons...@gmail.com> wrote:
>
> > While playing around with clojure I've found the (time ...) macro
> > isn't as powerful as I'd like.  To fix this I made a timing library to
> > help me figure out where all my runtime is going.  If other people
> > find it useful I'd like to get it into contrib.
>
> > Simple overview of clojure.contrib.timing:
>
> > clojure.contrib.timing/with-timing
> > ([expr {:name :timing-map}])
> >   "Executes 'expr', returns result of expr, and records its time to
> > execute.  Each time to execute is saved for processing later.  This
> > allows you to get mean/median/mode/cumulative runtimes for the
> > expression.
> >     - expr: The expression to evaluate
> >     - name: value to name expression, defaults to (str expr).
> >       timing-map: Reference to a map of recorded timings.  Defaults to
> > the shared global *timings."
>
> > clojure.contrib.timing/analyze-timing
> >   "Returns a hashmap of 'name' : '(analysis-func timing-list)'.  All
> > times are converted to milli seconds.  If timing-map is not given it
> > defaults to the shared global *timings*."
> >   ([analysis-func timing-map]
>
> > There are some other helper funcs/macros, but the above two are the
> > most important.  Future work here could give us a nice performance
> > timing library written in clojure, and powerful enough to allow
> > clojure programs to know how fast they are and tune themselves (think
> > serialized vs. parallelism, hostnames to connect to, etc...).
>
> > The timing-map is a ref to a map.  Each value is a list of every
> > runtime of the expression.  Every time the expression runs it's time-
> > to-run is cons-ed to the front of that expression's timing list.
>
> > Storing of the runtime into the ref is a side-effect of (with-
> > timing ...).  I was torn on this point, but I think it's the right
> > thing to do for now; performance is a side effect of code execution,
> > so it isn't that horrible for it to be stored as a side-effect.  This
> > is how the original (time ...) macro works; it reports the runtime to
> > stdout instead of returning it.
>
> > I'm not sure what the protocol here is for getting this thing out for
> > review and possible inclusion.  Is anyone interested?  How do I get my
> > changes out there for people to review?
>
> > Thanks!
> >  Chris
--~--~---------~--~----~------------~-------~--~----~
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
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
-~----------~----~----~----~------~----~------~--~---

Reply via email to