I'm not sure I understand what you're saying here. :( Your example is simply benchmarking the same bit of code in each form. Why would evaluating one explicitly affect that benchmark? Your original example called eval in the body of the functions that you're benchmarking. That is where the overhead comes from.
On Thursday, July 3, 2014 1:05:12 PM UTC-4, Pascal Germroth wrote: > > > > On Thursday, July 3, 2014 5:19:56 PM UTC+1, adrian...@mail.yu.edu wrote: >> >> You're going down a rabbit hole here. Evaluating forms at runtime will >> always result in a slower execution time than a function that doesn't >> evaluate a form at runtime. >> > > I thought that was the whole point of Clojure? > > The REPL is just parsing a string or file and running (eval) on it, I > can't detect any difference in speed when doing it manually: > > (quick-bench ((fn fac [x] (if (zero? x) 1 (* x (fac (dec x))))) 10)) ; => > 263 ± 9 ns > (eval `(quick-bench ((fn fac# [x#] (if (zero? x#) 1 (* x# (fac# (dec > x#))))) 10))) ; 269 ± 8 ns > > I'm very sure that the differences I measured are only because the lists > are being copied instead of passed by reference, which I can understand in > the case where the disassembly actually shows a copy being constructed. But > not in the case where the bytecode is exactly the same --- and criterium > takes a lot of time to warm up etc, all of the same optimisations should > have been applied (and the dynamic part of the code is not a lot anyway, > it's just calling AOT-compiled java code anyway. The only difference in > timing must stem from the element-wise comparison) > -- 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.