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.

Reply via email to