I recently read that Clojure runs on JamVM, which is nice, and made me looking for more information, since the last time I tried clojure is long ago and I was not really convinced. Especially, it was very slow and still had bugs. I do not know how about the bugs now, but reading across random benchmarks, I somehow always recognized a scheme like:
A: "Clojure performs 10 times worse than $randomJVMLang"
B: "Use coercions and type hints"
A: "Ok, now it performs 8 times worse"
B: "Use unsafe operations"
A: "Ok, now the code looks ugly and still performs 7 times worse"
B: "Use lazy evaluation"
A: "Whoa, 3ms, how is this even possible?"
C: "Lazy evaluation calculates stuff ondemand, the operations are never actually run"
A: "Ok. Well. I guess it cannot be done faster."
B: "That is not what Clojure is meant to be used for. And above that, Clojure offers a lot of useful abstractions, ..."
Well, speed is not everything. But on the other hand, it is still important. So there are a few things I would be interested in:
1. Is there any field where Clojure gets good results in benchmarks, even though the code is not ugly and over-optimized? Some people mentioned that this might be the case when it comes to concurrency.
2. How does it compare (in speed, memory-usage, but also in other aspects) to other Lisp-Dialects for the JVM, like for example Armed Bear Common Lisp, or some Scheme compilers for the JVM.
I am just interested, this is not thought as offence, even though it might sound so (well, I am a bit annoyed by the many flamewars and especially the Clojure-fanboy's behaviour in some of these), I think I will never really like Clojure, as far as I saw, but on the other hand, it is probably still better than most of the other JVM-Languages, it is still a Lisp, and it is probably already the large Lisp-Dialect of our decade.