5 ms·
Why? CL compilers (SBCL at least) generate really fast code.
by xyzzyz 15y ago
Why? CL compilers (SBCL at least) generate really fast code.
- nickik 15y agoIt does not matter with how good a compiler you compile an interpreter it stays an interpreter. With Pypy you get a JIT Compiler. Sure you could maybe write a JIT with CL but thats a lot more work.
- mbenkard 15y agoI don't understand. Do you mean that you can't compile Clojure into Common Lisp the way you can compile it into Python/PyPy?
- halgari 15y agoYou can, but I think you'd run into the same issues mentioned here: http://clojure-py.blogspot.com/2012/02/ive-been-asked-many-times-recently-how.html http://clojure-py.blogspot.com/2012/02/ive-been-asked-many-t... Basically it reflection (aka dynamic dispatch) is a major performance killer if you don't implement a tracing jit.
- pavelludiq 15y agoWouldn't SBCLs type inference(+ type hints) help with this? I'm no compiler expert, but i think clojure(with the possible exception of multimethods, which are slow even on the JVM) would map well to CL(maybe even better than the JVM).
- mbenkard 15y agoCLOS implementations have had to deal with the problem of extreme dynamism for a long time, so there has been quite a bit of optimization work associated with it. Polymorphic inline caches help a lot, for example. That said, a good tracing JIT is probably better; but on the other hand, SBCL has profited from many years of optimization work on CMU CL. It would be interesting to see some real-world performance comparisons between SBCL and PyPy.
- nickik 15y agoPyPy is not just an Python-Interpreter. The PyPy Team build a Toolchain that can creat a JIT-Compiler out of a Interpreter (read some about the pypy project and you will be enlightened. Such a Toolchain does not exist for Common Lisp.
- mbenkard 15y agoInteresting! Thanks for the pointer.