Блог*
#prog #article Biased reference counting: minimizing atomic operations in garbage collection (pdf) Счётчики ссылок можно считать формой сборщика мусора. Как вариант сборки мусора этот подход привлекателен низким оверхедом по памяти и короткими паузами. Однако…
В 2019 году группа исследователей реализовала PCIe драйвера на широком наборе языков и выкатила папир по результатам исследования. Про Swift там было сказано следующее:
Swift increments a reference counter for each object passed into a function and decreases it when leaving the function. This is done for every single packet as they are wrapped in Swift-native wrappers for bounds checks. There is no good way to disable this behavior for the wrapper objects while maintaining an idiomatic API for applications using the driver. A total of 76% of the CPU time is spent incrementing and decrementing reference counters. This is the only language runtime evaluated here that incurs a large cost even for objects that are never free’d
Это, судя по всему, наихудший случай для ARC в Swift, ибо в реальных программа доля времени исполнения, занятая из изменениями счётчиков, меньше. Но даже в реальных программах эта доля нетривиальна.
Swift increments a reference counter for each object passed into a function and decreases it when leaving the function. This is done for every single packet as they are wrapped in Swift-native wrappers for bounds checks. There is no good way to disable this behavior for the wrapper objects while maintaining an idiomatic API for applications using the driver. A total of 76% of the CPU time is spent incrementing and decrementing reference counters. This is the only language runtime evaluated here that incurs a large cost even for objects that are never free’d
Это, судя по всему, наихудший случай для ARC в Swift, ибо в реальных программа доля времени исполнения, занятая из изменениями счётчиков, меньше. Но даже в реальных программах эта доля нетривиальна.
GitHub
GitHub - ixy-languages/ixy-languages: A high-speed network driver written in C, Rust, C++, Go, C#, Java, OCaml, Haskell, Swift…
A high-speed network driver written in C, Rust, C++, Go, C#, Java, OCaml, Haskell, Swift, Javanoscript, and Python - ixy-languages/ixy-languages
❤1
Блог*
Result::unwrap_or_try_else_async #justrustaceanthings
Смех смехом, а вот мне недавно по работе, кажется, такая вещь пригодилась бы
😭4
#prog #article
Four Kinds of Optimisation (перевод)
TL;DR:
1. Использование более хорошего алгоритма
2. Использование более хорошей структуры данных
3. Использование более низкоуровневой системы
4. Принятие менее точного решения
Разумеется, по каждому пункту автор расписывает довольно подробно, так что советую прочитать целиком.
Four Kinds of Optimisation (перевод)
TL;DR:
1. Использование более хорошего алгоритма
2. Использование более хорошей структуры данных
3. Использование более низкоуровневой системы
4. Принятие менее точного решения
Разумеется, по каждому пункту автор расписывает довольно подробно, так что советую прочитать целиком.
👍10
Forwarded from Лентач
Это позволит сажать активистов на срок до 10 лет при том, что такой организации не существует
Please open Telegram to view this post
VIEW IN TELEGRAM
🤮11🤬7👍6😭5😁3💩3🖕2❤1