Email or username:

Password:

Forgot your password?
AkhIL

Запилил свой велосипедный примитив синхронизации на Rust. Делал чтобы передавать данные между синхронным и асинхронным потоками без блокировок. По сути я реализовал тройной буфер с атомарными переключателями.

И вот мне стало любопытно, как мой велосипед по скорости в сравнении с mpsc каналами tokio. Накатал бенчмарк…

На картинке, Сверху-вниз:
1. Токио канал размером 1024 ячейки, сообщения передаются по одному;
2. Токио канал размером 2048, сообщения передаются пачками по 1024 при помощи Sender::reserve_many и Receiver::recv_many;
3. Токио канал, передаются вектора по 1024 сообщения;
4. Мой велосипед - тройной буфер в виде трёх векторов. Передаются пачки по 1024 сообщения;
5. Обёртка для моего велосипеда имитируются канал, пачки по 1024 сообщения.

Код опубликую когда приведу его в порядок.

1 comment
AltTexter RU

🔍 Описание

График скриншота. На графике изображены пять вертикальных полосок, расположенных слева направо. Первые четыре полоски очень маленькие, а последняя самая большая и имеет форму скрипки. Над каждой полоской написан текст. Внизу под графиком есть подпись оси X: "Average time (ms)".

📝 Текст на картинке

data_move/1024: Violin plot
channel_same_fig_lower/1024
channel_batch/1024
batch_as_vectors/1024
data_move/upper/1024
upper/channel/1024
Average time (ms)

🔍 Описание

График скриншота. На графике изображены пять вертикальных полосок, расположенных слева направо. Первые четыре полоски очень маленькие, а последняя самая большая и имеет форму скрипки. Над каждой полоской написан текст. Внизу под графиком есть подпись оси X: "Average time (ms)".

📝 Текст на картинке

Go Up