2013/5/13 Mike Thvedt <cynicalk...@gmail.com> > A good implementation of ISeq won't return a new object, and new > short-lived objects are cheap on the JVM anyway. OTOH count can be slow for > some data structures. if you don't like instantiating lots of new objects > only to throw them away, you're missing out on one of HotSpot's most > significant performance/convenience sweet spots, so it's strange you call > that premature optimization. > > There is however an optimization story against seq: Hotspot (at least on > my machine) refuses to inline the call to seq by default (it might still > inline if the stars are right or something, the JVM is mysterious). My > guess is it's because the code in seq and seqFrom is too big, on my box it > exceeds the inline threshold by one byte... > > I'm not sure what you mean. For an ISeq seq won't return a new object. But for everything else it will. And count is cheap (a simple field access) for clojure data structures (a seq is not a data structure). While initialising an immediately-to-be-thrown-away object might be (relatively) expensive even when allocation is cheap.
I called my point of view "premature optimisation" because it's probably like you said: allocation is cheap and initialisation usually not worth worrying about. So worrying about it is "premature optimisation". I still feel empty? to be too ugly in its current implementation. (And to be honest: I almost never needed it, up to now...) Meikel -- -- 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/groups/opt_out.