1.83K subscribers
3.3K photos
132 videos
15 files
3.58K links
Блог со звёздочкой.

Много репостов, немножко программирования.

Небольшое прикольное комьюнити: @decltype_chat_ptr_t
Автор: @insert_reference_here
Download Telegram
#prog #rust #rustlib

copypasta — библиотека для кроссплатформерной работы с буфером обмена
7
#prog #rust #rustlib

cargo-debstatus — инструмент для оценки того, насколько проект пригоден к опакечиванию в Debian.

cargo-deb — инструмент для собственно проведения этой операции.

cargo-dist — инструмент для автоматизации публикации новых релизов, с возможностью автоматически генерировать скрипты для релиза артефактов для CI:

For instance, enabling GitHub CI with cargo dist init will generate release.yml, which implements the full pipeline of plan, build, host, publish, announce:

🔹Plan
🔸Waits for you to push a git tag for a new version (v1.0.0, my-app-v1.0.0, my-app/1.0.0, ...)
🔸Selects what apps in your workspace to announce new releases for based on that tag
🔸Generates a machine-readable manifest with changelogs and build plans
🔹Build
🔸Spins up machines for each platform you support
🔸Builds your binaries and tarballs
🔸Builds installers for your binaries
🔹Publish:
🔸Uploads to package managers
🔹Host + Announce:
🔸Creates (or edits) a GitHub Release
🔸Uploads build artifacts to the Release
🔸Adds relevant release notes from your RELEASES/CHANGELOG
👍3🔥1
#prog #rust #serde #article

Faster Rust Serialization

Или несколько советов о том, как делать меньше лишней работы при сериализации с использованием serde.
👍4👎1
Forwarded from Neural Machine
Бойтесь жить в одиночестве или вместе с людьми
👍3😁2🤮2😱1
Forwarded from Д їде дахом
🤣22👍81
Нечасто мне снится, что я кого-то целую.

Тем более мальчика.
🤮22❤‍🔥12🌚7🥰3🤔1
Хочу ходить в таких брюках и говорить "потрогай траву"
🍌18🤮5👍1
#meme философский
Forwarded from rothko's kimono
🤔4😱2
(#prog?) #meme 🌚
🍌1
Forwarded from χоρоший ☽☽☽ λисuчко
Простите
🤡5😁2
Блог*
А кстати, кто из подписчиков Блог*а сейчас в Армении?
Полгода прошло, так что повторю вопрос. Кто из подписчиков сейчас в Армении?

(Сова, про тебя я помню)
🤔2👍1😁1
Блог* pinned «Полгода прошло, так что повторю вопрос. Кто из подписчиков сейчас в Армении? (Сова, про тебя я помню)»
#prog #article

Biased reference counting: minimizing atomic operations in garbage collection (pdf)

Счётчики ссылок можно считать формой сборщика мусора. Как вариант сборки мусора этот подход привлекателен низким оверхедом по памяти и короткими паузами. Однако при прямолинейном использовании этот подход даёт довольно большой оверхед по времени исполнения: ссылки создаются и уничтожаются всё время. Если используемые счётчики атомарные — что абсолютно необходимо для корректной работы в многопоточном окружении — то возня с ними может составить заметную долю общего времени исполнения программы.

Традиционные подходы к оптимизации RC полагались на оптимизации компилятора, которые позволяют убирать операции инкремента и декремента, соответствующие друг другу, или на разделение операций изменения счётчиков и освобождения мёртвых объектов. Авторы данной статьи предлагают новый подход. Именно, они подмечают, что в реальных программах доля объектов, разделяемых между потоками, крайне невелика, и потому предлагают разделить единый счётчик ссылок на два: один для подсчёта ссылок на потоке, которому объект принадлежит, и один для всех остальных потоков. Операции с первым счётчиком могут быть сделаны обычными, неатомарными операциями, что позволяет снизить долю времени исполнения на манипуляции со счётчиками.

Более подробно детали реализации — вместе с очередями объектов для обработки граничных случаев — описаны в папире. Авторы реализовали свой подход в рантайме языка Swift — который использует счётчики ссылок с оптимизациями компилятора и немедленным освобождением объектов — и замерили влияние на производительность программ. Результаты показали, что подход авторов заметно снижает общее время исполнения программ и увеличивает пропускную способность "серверных", многопоточных программ, при этом давая крайне небольшое увеличение пиковой потребляемой памяти.

We implemented BRC in the Swift programming language runtime and evaluated it with various client and server programs. We found that BRC accelerated non-deferred RC. Specifically, it reduced the average execution time of client programs by 22.5%, and improved the average throughput of server programs by 7.3%.

Авторы также сделали синтетический бенчмарк, который симулирует исполнение программы с большим количеством разделяемых между потоками объектов и обнаружили, что их подход становится хуже оригинального по производительности при доле разделяемых объектов около 75% от их общего числа.
🔥5👍2🤔1
Блог*
#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, ибо в реальных программа доля времени исполнения, занятая из изменениями счётчиков, меньше. Но даже в реальных программах эта доля нетривиальна.
1
Forwarded from Neural Machine
Если я тебе не нравлюсь, иди и плачь, пожалуйста
😁6🔥3🤮1
Forwarded from TrapsWorld
😐17😁8🤔1🤮1
Не хочется работать, но... Не хочется
👍7🤡2😢1