Rich Hickey's slides from jvm lang summit - worth a read?
Rich Hickey
richhickey at gmail.com
Fri Sep 25 16:03:23 PDT 2009
bearophile Wrote:
> Rich Hickey:
>
> > You might find this interesting:
> > http://clojure.org/transients
> > It supports using the exact same immutable data structures in/out of your (externally pure) function, as well as the exact same functional "shape" of your code when using transients (roughly, mutables) internally.
>
> Yes, it's interesting and cute, thank you for the link.
>
> D2 too is leading in that direction, allowing mutables and imperative code inside pure functions. (That's also why I have asked Don to fix pure/notpure functions inside pure functions, so now inside pure functions you can have complex stuff (inner functions are a bit slower, but probably that's often acceptable)).
>
> Near the end of that page there's written:
>
> >(time (def v (vrange 1000000)))
> "Elapsed time: 297.444 msecs"
>
> (time (def v2 (vrange2 1000000)))
> "Elapsed time: 34.428 msecs"
>
> Oh, yeah, transients are fast!<
>
> 34 ms is the timing with transients. The problem is that "fast" is almost meaningless.
"fast" is always a subjective term.
>When you give a timing you have to always give ways to perform an absolute comparison too, relative comparisons aren't enough. When you show Clojure timings you have to specify the CPU and give timings for equivalent C and Java code.
>
No, I don't. The post is for Clojure users and shows them a relative comparison they care about, persistent vs transient.
> For example on a ~2GHz Celeron in D that allocation + initialization loop takes about 7.3 ms with DMD. If you use memory from the C heap (avoiding the initial useless clearing of the array of integers) that code runs in about 3.6 ms. Almost ten times faster than that "fast" Clojure version.
>
Unless that code is returning a persistent vector and provides thread isolation, it is not doing the same job. I don't have time to spend coding up a persistent vector and thread-isolated transients in C/C++/D. It might be faster. I didn't say this was "fastest", that wasn't the point. Best of luck with D.
Rich (Early Zortech user and fan, btw)
More information about the Digitalmars-d
mailing list