The inlining part is explained very well by this blog post http://normanmaurer.me/blog/2014/05/15/Inline-all-the-Things/
As for why I left all the repetition in there, I tend to let code expand before getting annoyed and compacting it. Sometimes there's a commit between those two events, sometimes there's not. In this case, you get to see how the macro/abstraction sausage is made. Happy to answer any other questions, Zach On Sunday, August 9, 2015 at 9:38:51 AM UTC-7, Lawrence Krubner wrote: > > > Reid, thank you. I think you answer half the question. You make a good > point about giving the JVM a way to better optimize a hot path. I think you > are right about that. But, given the large amount of repetition between > "chain'-" and "chain-" I'm wondering why this wasn't done with a macro? > > > > On Sunday, August 9, 2015 at 2:08:47 AM UTC-4, Reid McKenzie wrote: >> >> -----BEGIN PGP SIGNED MESSAGE----- >> Hash: SHA256 >> >> Lawrence, >> >> This is just a theory, but in the interests of response time, the JVM >> uses a large number of heuristics to determine what optimizations will >> likely prove profitable. One of them is a budget for method size. I >> would guess that lifting this code out into a separate fn made the JVM >> see that it was optimizing a hot path between the main body and >> several small but tightly related methods thus giving itself more >> leeway to inline and optimize in ways that it would otherwise presume >> are more expensive and not pursue. >> >> Reid >> > -- 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.