Rust
8.61K subscribers
488 photos
42 videos
3 files
1.02K links
Rust programming language

По всем вопросам- @workakkk

#VRHSZ
Download Telegram
Трёхлетний GitHub issue в Gleam закрыли не новым алгоритмом, а более аккуратной работой с памятью.

Giacomo Cavalieri из core team переписал pretty printer на Rust arenas.

Раньше каждый вложенный Document заворачивался в отдельный Box и жил отдельной heap allocation. Для рекурсивной структуры это быстро превращается в сотни мелких выделений памяти.

Теперь документы кладутся в общую arena, а код передаёт ссылки на них.

Результат на реальном Gleam-проекте:

* pretty printer: 13ms → 9.8ms
* ускорение: 24%
* полный gleam format: 13% быстрее
* peak memory: 8.4MB → 7.6MB

Дополнительный бонус: arena позволила кэшировать и переиспользовать частые документы вроде ключевых слов, запятых и скобок. То, что раньше аллоцировалось снова и снова, теперь создаётся один раз.

Хороший пример, где производительность упирается в скучные мелкие allocation costs.

Особенно в рекурсивных структурах, где один Box выглядит безобидно, пока их не становится слишком много.

https://giacomocavalieri.me/writing/gleam-rust-arenas

#RustLang #Performance #Gleam
🔥269👍5