> Doh. I screwed up again, and forgot the flag that enables JIT > compilation here. I'll regenerate the PyPy-driven bf evaluator by > using: > > $ python ./pypy/pypy/translator/goal/translate.py --opt=jit example5.py > > and generate corrected numbers soon. My apologies for being hasty. >
Followup: tests on my machine indicate that the PyPy JIT-compiled brainf*ck evaluator produces absolutely amazing performance. It'd be interesting to see how it works on larger languages. For brainf*ck, the PyPy folks righteously kick butt. That being said, it takes a very, very long time to produce the specialized PyPy evaluator: roughly about 11 minutes. That makes even Scribble documentation generation time look reasonable. :) Here's what I see when I run the mandelbrot benchmark with their JIT-ed evaluator: fermi ~/local/pypy-tutorial $ time ./example5-c mandel.b [after fractal output] real 0m12.000s user 0m11.677s sys 0m0.120s I'm comparing this vs. the planet dyoo/bf from my latest github repo. $ raco make mandel.rkt && time racket mandel.rkt [after fractal output] real 0m49.845s user 0m49.299s sys 0m0.420s So it looks like a multiple of 4. It would be nice if that constant were smaller, but I'm still impressed that Racket gets even that close, given how little time Racket takes to do the actual compilation. I've documented the optimizations I coded up in: http://hashcollision.org/brainfudge/ They are all in the new Section 10, as is a subsection on producing structured runtime errors with the source location property. Comments would be appreciated! _________________________________________________ For list-related administrative tasks: http://lists.racket-lang.org/listinfo/users