1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

PageSift から切り出した Rust 製 Base64 コーデック「yolow64」を公開しました

1
Posted at

PageSift(LLM パイプライン向けの Rust 製 Web コンテンツエンジン)を開発する中で、Base64 はブラウザスクリーンショット、MCP の画像リソース、プロキシ認証といった、スループットとメモリ確保が効く場所に何度も現れました。PageSift 内部で育ったそのコーデックを、独立した MIT ライセンスのライブラリとして切り出しました。それが yolow64 です。crates.io で公開済みです。

特徴

  • 実行時にディスパッチされる SIMD:x86-64 では AVX2(Linux ではデコードのバルクループがアセンブリ)、AArch64 では NEON、それ以外はスカラーにフォールバック。CPU 機能の検出は一度だけ行いキャッシュします。
  • ランタイム依存ゼロ、std のみ。Rust 1.89 以降。
  • API は実利用に合わせて用意しました:スライスへの直接書き込み、既存 Vec への追加、検証のみ(デコードなし)、ストリーミングデコード、data URL の一括生成。
  • 空白を許容するモードはスペース・タブ・CR・LF のみを 1 パスで無視します。76 文字ごとの CRLF が入る MIME 形式の入力が対象です。

ベンチマーク

条件:i7-10700、CPU 0 固定、同一プロセスで交互測定、完全な実行 3 回の中央値。方法・再現用プログラム・生 CSV はリポジトリにあり、README にはスループットの棒グラフがあります。

  • 厳格モード、4 KiB–4 MiB:エンコード・デコードともに base64 クレートの約 6.5–9 倍、base64-simd の約 1.7–2.5 倍。
  • CRLF 許容デコード:base64-simd の forgiving_decode の約 4 倍。
  • Go の最速実装 moego と同一マシンでほぼ互角でした。

正直な注記を 2 点:128 バイト以下の短い入力では 3 ライブラリで勝敗が入れ替わります(ナノ秒単位の固定コストの差で、表にはそのまま掲載しています)。また空白許容の受理規則は 3 者で完全には同じではないため、比較は全員が受理できる正しいパディング付き CRLF 入力で行っています。

使い方

[dependencies]
yolow64 = "0.1"

リポジトリ:https://github.com/YOLOW92/yolow64
crates.io:https://crates.io/crates/yolow64

PageSift 本体はこちらです:https://github.com/YOLOW92/pagesift

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?