3 ms·
I like tinkering with interpreters, and I do it a lot, but this is chump change compared to even a baseline compiler, especially one that makes use of type prof
by titzer 3y ago
I like tinkering with interpreters, and I do it a lot, but this is chump change compared to even a baseline compiler, especially one that makes use of type profiles. There is a pretty big investment in introducing a compiler tier, but I'm not convinced that it's less engineering effort than squeezing more out of an interpreter that fundamentally has dispatch and dynamic typing overhead. There aren't that many bytecode kinds in CPython, so it seems worth doing.
- tekknolagi 3y agoThat's what we did in Skybison before it got wound down: https://github.com/facebookexperimental/skybison https://github.com/facebookexperimental/skybison
- titzer 3y agoAre there publicly-available performance results?
- tekknolagi 3y agoKind of! In my fork I run microbenchmarks on each PR. So you can see on, for example, https://github.com/tekknolagi/skybison/pull/456 https://github.com/tekknolagi/skybison/pull/456, that the change had a 3.6% improvement on the compilation benchmark. If you expand further, you can see a comparison with CPython 3.8. Unfortunately Skybison is still on 3.8.
- mardifoufs 3y agoWhat's the difference between that and cynder? I know they both come from Meta/IG but I wonder if cynder is an evolution from skybison or is it more of a different approach?
- tekknolagi 3y agoCinder and Skybison are different approaches. Skybison was a ground-up rebuild of the object model and interpreter, whereas Cinder is a JIT that lives on top of CPython.
- Seattle3503 3y agoSmall improvements to cpython are multiplied out to the millions of machines cpython is installed on by default.