OK, I'll try again. Thanks. jf
On Jun 30, 6:14 pm, David Nolen <dnolen.li...@gmail.com> wrote: > On Wed, Jun 30, 2010 at 10:19 AM, j-g-faustus > <johannes.fries...@gmail.com>wrote: > > > > > > > Tried the equiv branch briefly: The "1.1 style" version is ~4% > > quicker, but still ~4x slower than Java and ~2x slower than mutable > > deftype. > > > But I found another issue: Array access apparently converts primitives > > to boxed values at every access. This is perhaps because aget/aset is > > a function and primitives cannot cross function boundaries? > > That would explain the relative slowness of arrays. > > > Here is a test casehttp://gist.github.com/458669 > > And a profiler screenshot > >http://i589.photobucket.com/albums/ss334/j-g-faustus/profiling/array-... > > > 15% CPU time goes to Double.valueOf(double) in all-primitive array > > access and another ~4% to intCast(int). > > > The number of calls to Double.valueOf(double) seems to suggest that it > > is called only on aset, not on aget, though I can't think of any > > reason how that could be. > > > Does anyone know more about this? > > > Regards > > jf > > On the equiv branch I don't see this at all. Also on the equiv branch most > of your type hints inside the fn are unnecessary. > > (defn ^:static test-double ^doubles [^long n] > (let [len 5 > arr (double-array 5) > n n] > (dotimes [_ n] > (dotimes [i len] > (dotimes [j (inc i)] > (aset arr j > (+ 1.0 (- (aget arr i) (aget arr j))))))) > arr)) > > David > > > > -- 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