On 21/06/13 14:34, Colin Yates wrote:
Is it correct but simply non-idiomatic?
no no it's actually very *dangerous*...by doing this you're essentially
introducing mutable global state in your program and Clojure is a
language that strives hard to minimise mutable and especially global
state! I wouldn't say 'wrong' because the compiler lets you do it but it
is certainly nasty code!
Also note that if I move the body out of the 'let' version of the
array into another function passing in the array then the performance
is the same as the 'def' version, so even if def is a problem it isn't
the only cause.
using 'let' or passing the array as parameter is the nice and safe
approach. The general performance of clojure when it comes to primitive
arrays was discussed very recently in this thread [1] and was concluded
that Clojure does indeed match java's performance. The specific use-case
actually was summing up primitive arrays. I encourage you read it...In a
nutshell, If you're using leiningen, add this entry to your project.clj
and rerun your benchmarks.
:jvm-opts ^replace []
Jim
[1] https://groups.google.com/forum/#!topic/clojure/LTtxhPxH_ws
<https://groups.google.com/forum/#%21topic/clojure/LTtxhPxH_ws>
--
--
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to [email protected]
Note that posts from new members are moderated - please be patient with your
first post.
To unsubscribe from this group, send email to
[email protected]
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 [email protected].
For more options, visit https://groups.google.com/groups/opt_out.