> It all depends on your algorithms and your code. Clojure has lots of > support (data structures and algorithms) for concurrent programming, > but you have to choose and combine them yourself to get efficient > parallelization.
I know that there are other functional approaches where the compiler automatically finds ways to parallelize. Is there much scope for this in Clojure? Or is it all pretty much manually added concurrency? And this leads to another question I have about Lisp-style languages in general. I get the impression that in Lisp much of the "compiler" is Lisp code itself. Ie, layer and layer of macros build up towards the language that then actually gets "used". Does this layer upon layer of macros lead to inefficiencies in itself? Or is the opposite true? > Again this depends a lot on what you are doing. Hotspot is already > doing an impressive job on some applications, but remains bad at > others. That seems to match what I've read. On average I get the impression that it is about 2 times as slow as efficient C++ code and uses maybe 10 times as much memory. What I'm wondering is whether there is still quite a bit of "fat to be trimmed" with HotSpot, or whether it's approaching the limits of what is achievable. > One source of hope for better interfaces is new virtual machines. One > candidate is VMKit (http://vmkit.llvm.org/), an implementation of the > JVM (and .Net as well) on top of LLVM. Combine this with the gcc > version that produces LLVM code, and it should be possible to get > Java-C interoperability with much less friction than through the JNI. > On the other hand, it will be a long time before VMKit matches the > performance of HotSpot. Thanks for the info! This does sound like a promising approach. For the future though. > You could also consider writing Clojure code that generates C++ code. > Or C, or why not directly LLVM. Thanks. Worth considering. Though I don't really know whether this is a practical option or not. Maybe it is. Thanks Konrad for your thoughts. Most useful. Cheers, Mark P. --~--~---------~--~----~------------~-------~--~----~ 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 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 -~----------~----~----~----~------~----~------~--~---