Дописи з тегом #jit
-
Зливаємо конвеєр risp, щоб обігнати CPython: вбити 400 000 виділень виявилося замало
У risp, Lisp на Rust без залежностей, злиття map/filter/fold скорочує 400 000 виділень до O(1), але CPython обганяє лише мономорфний цикл i64: 4 мс проти 24 мс.
-
Чому risp, Lisp із нативною компіляцією, програє CPython на map/fold: алокації, а не кодогенерація
risp — Rust Lisp без залежностей — обходить CPython у 9–40× на цілих, але програє 3× на map+fold: ~400 000 алокацій cons-комірок, не диспетчеризація.
-
Додаємо Cranelift JIT, який працює у 10–23× швидше за CPython
Заглиблення у вмикуваний Cranelift JIT для risp на Rust: перевірник типів за принципом «відхиляй, не вгадуй», зведення if/cond/let до Cranelift IR, вбудоване виявлення знакового переповнення, хвостові виклики як зворотні ребра циклу та охоронець деоптимізації, що випереджає CPython у 10–42 рази.