kanal - Rustにふさわしい高速同期と非同期チャンネル

(The fast sync and async channel that Rust deserves)

Created at: 2022-07-13 20:23:47
Language: Rust
License: MIT

運河

Rustにふさわしい高速同期と非同期チャンネル!

Crates.io ドキュメンテーション MITライセンス

カナールとは

Kanalは、プログラマーが機能豊富なマルチプロデューサーマルチコンシューマチャネルを提供することにより、CSPモデルで効果的なプログラムを設計するのに役立つRustライブラリです。このライブラリは、同期APIと非同期APIの両方を統合して、Rustコードの同期部分と非同期部分の間のメッセージパッシングをパフォーマンスの高い方法で統一することに焦点を当てています。

Kanal はプレリリース中であり、まだ運用環境では使用しないでください。

パフォーマンスはカナールの主な目標です。

なぜカナールは速いのですか?

  1. Kanalは直接メモリアクセスを使用して、送信側のスタックからオブジェクトをコピーしたり、Golangとまったく同じ受信者のスタックに書き込んだりしているため、bounded(0)チャネルのヒープ割り当ての必要性がなくなり、スタック割り当ても大幅に削減されます。
  2. Kanalはチャネルロックに特別に調整されたミューテックスを使用していますが、チャネル内部ロック時間が予測可能であるため可能です。つまり、ミューテックスは最終的な公平さに満ちています。
  3. 錆び驚くべきコンパイラ

カナールを使用する理由

  • カナールは超高速で効率的なコミュニケーションです
  • カナールは同期と非同期の両方で通信でき、同期と非同期の間でも通信できます
  • Kanalは他のrustライブラリと比較してよりクリーンなAPIを提供します
  • Golangと同様に、クローズ機能にアクセスでき、チャンネルの任意のインスタンスからその信号をブロードキャストできます。

なぜカナールを使わないのですか?

  • 私たちは、小さなコードベースを監査し、未定義の動作がないことを確認するために最善を尽くしています。カナールは安全でないものを使用しています。あなたのプロジェクトでそれで大丈夫でない場合は、安全な唯一の選択肢を使用することをお勧めします。

ベンチマーク結果

結果は Kanal 同期の結果に基づいて正規化されるため、60x は、そのフレームワークのテストが Kanal の 60 倍の速度を取ることを意味します。

マシン: 錆:
移動: OS ():
日付:

Oct 16, 2022

AMD Ryzen Threadripper 2950X 16-Core Processor
rustc rustc 1.64.0
go version go1.19.2 linux/amd64
uname -a
Linux 5.13.0-35-generic #40~20.04.1-Ubuntu SMP Mon Mar 7 09:18:32 UTC 2022 x86_64

ベンチマークコード

ベンチマーク