So, is there a way to type hint on cb that it has a function accepting a long argument?
On Apr 25, 12:55 am, Stuart Sierra <the.stuart.sie...@gmail.com> wrote: > I'm taking a guess here: The compiler doesn't know the type signature of > `cb` when compiling `foo`, so it's going to use the IFn.invoke(Object) > signature. Clojure's type inference is only local, and it won't assume that > a primitive-type signature is available for an arbitrary function. > > So there's probably some extra typecasting going on when `fn` is > type-hinted to a primitive. > > In general, type-hinting to primitive types doesn't do you any good in the > presence of higher-order functions like `map`. > > -S > > > > > > > > On Wednesday, April 24, 2013 11:35:11 AM UTC-4, Alice wrote: > > > (defn foo [^long l cb] (cb l)) > > > (time > > (dotimes [n 1000000] > > (foo n (fn [l] nil)))) > > > (time > > (dotimes [n 1000000] > > (foo n (fn [^long l] nil)))) > > > "Elapsed time: 7.861 msecs" > > "Elapsed time: 11.770973 msecs" > > > Why is the latter slower? -- -- 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.